私はwpf開発の初心者です。実行時に動的にキャンバスに画像を追加しました。その画像コンテナ、つまりキャンバスを png 画像として保存しようとしています。しかし、出力画像を正しく取得していません。空のpng画像を取得しています。私のコードロジックの何が問題なのか、誰か教えてください。
コード
private void CreateSaveBitmap1(string filename, Rect rect)
{
System.Windows.Controls.Image bg = new System.Windows.Controls.Image();
bg.Source = new BitmapImage(new Uri(filename, UriKind.Relative));
Canvas imageCan = new Canvas();
imageCan.Height = 800;
imageCan.Width = 1000;
Canvas.SetLeft(bg, 0);
Canvas.SetTop(bg, 0);
bg.RenderTransform = trGrp; //trGrp is the TransformGroup object.
RenderTargetBitmap rtb = new RenderTargetBitmap((int)imageCan.Width, (int)imageCan.Height, 96d, 96d, System.Windows.Media.PixelFormats.Default);
rtb.Render(imageCan);
//var crop = new CroppedBitmap(rtb, new Int32Rect((int)rect.X, (int)rect.Y, (int)rect.Width, (int)rect.Height));
BitmapEncoder pngEncoder = new PngBitmapEncoder();
pngEncoder.Frames.Add(BitmapFrame.Create(rtb));
using (var fs = System.IO.File.OpenWrite(@"D:\test\nowTest.png"))
{
pngEncoder.Save(fs);
}
}