Comment recadrer l'image et de l'enregistrer dans ImageSource dans WPF?

Je suis nouveau à l'apprenant de WPF. ici j'ai une question.
J'ai une image, largeur:360, hauteur:360. Ici, j'ai envie de recadrer cette image comme ci-dessous:

( 0,0 ) à (120,120) enregistrer pour la première ImageSource objet,

(120,0 ) (240,120) enregistrer pour la deuxième ImageSource objet,

(240,0 ) (360,120) enregistrer pour la troisième ImageSource objet;,

......

pls voir plus de détails dans l'image ci-dessous:
Comment recadrer l'image et de l'enregistrer dans ImageSource dans WPF?

Mon exemple de code ci-dessous:

    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 < 3; i++)
{
iTop = i * 120;
for (int j = 0; j < 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);
}
}
}

mais il ne fonctionne pas comme je m'y attendais, semble que tous les ImageSource objets magasin de la même image, pas le corping partie. Quelqu'un peut-il m'aider ? thx.

OriginalL'auteur CharlieShi | 2012-09-04