私はWPFの初心者です。ここで質問があります。幅:360、高さ:360の画像があります。ここで、この画像を次のようにトリミングします。
( 0,0 ) から (120,120) を最初の ImageSource オブジェクトに保存し、
(120,0 ) から (240,120) を 2 番目の ImageSource オブジェクトに保存し、
(240,0 ) から (360,120) を 3 番目の ImageSource オブジェクトに保存します。
……</p>
Pls は下の写真で詳細を参照してください:
以下の私のコードサンプル:
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);
}
}
}
しかし、期待どおりに機能しません。すべての ImageSource オブジェクトが、コーピング部分ではなく、同じ画像を格納しているようです。誰でも私を助けることができますか?どうも。