title: How to crop image and save into ImageSource in WPF?
body: <p>I am new learner to WPF. here I got a question.
  I have a image, width:360, height:360. Here I want to crop this image like below:</p>
  
  <p>(  0,0  )   to (120,120) save to the first  ImageSource object,</p>
  
  <p>(120,0  )   to (240,120) save to the second ImageSource object,</p>
  
  <p>(240,0  )   to (360,120) save to the third  ImageSource object;,</p>
  
  <p>……</p>
  
  <p>pls see more details in below picture:
  <img src="https://i.stack.imgur.com/dwdyA.jpg" alt="enter image description here"></p>
  
  <p>My code sample below:</p>
  
  <pre><code>    private void CutImage(string img)
      {
          int iLeft = 0;
          int iTop = 0;
          int count = 0;
  
          Image thisImg = new Image();
          BitmapImage src = new BitmapImage();
          src.BeginInit();
          src.UriSource = new Uri(img, UriKind.Relative);
          src.CacheOption = BitmapCacheOption.OnLoad;
          src.EndInit();
          thisImg.Source = src;
  
          for (int i = 0; i &lt; 3; i++)
          {
              iTop = i * 120;
              for (int j = 0; j &lt; 3; j++)
              {
                  iLeft = j * 120;
  
                  Canvas canvas = new Canvas();
  
                  Rectangle destRect = new Rectangle();
                  destRect.SetValue(Canvas.LeftProperty, (double)0);
                  destRect.SetValue(Canvas.TopProperty,(double)0);
                  destRect.Width = destRect.Height = 120;
  
                  Rect srcRect = new Rect();
                  srcRect.X = iLeft;
                  srcRect.Y = iTop;
                  srcRect.Width = srcRect.Height = 120;
  
  
                  thisImg.Clip = new RectangleGeometry(srcRect);
  
                  thisImg.Clip.SetValue(Canvas.TopProperty, (double)iTop);
                  thisImg.Clip.SetValue(Canvas.LeftProperty, (double)iLeft);
                  thisImg.Clip.SetValue(Canvas.WidthProperty, (double)120);
                  thisImg.Clip.SetValue(Canvas.HeightProperty,(double)120);
  
                  objImg[count++] = (ImageSource)thisImg.GetValue(Image.SourceProperty);
              }
          }
        }
  </code></pre>
  
  <p>but it doesn't work as I expected, seems that all the ImageSource objects store the same image, not the corping part. Any one can help me ? thx.</p>