アプリケーションでキャンバス領域のスナップショットを作成したいと思います。ビジュアルブラシを使用してスナップショットを取得し、PngEncoderを使用して同じものを保存しています。しかし、結果のPNGは空の黒い画像にすぎません。問題が作成されたBitmapSourceまたはPNGEncoderの問題にあるかどうかはわかりません。これが私が同じものを取得するために使用しているコードです。
public void ConvertToBitmapSource(UIElement element)
{
var target = new RenderTargetBitmap((int)(element.RenderSize.Width), (int)(element.RenderSize.Height), 96, 96, PixelFormats.Pbgra32);
var brush = new VisualBrush(element);
var visual = new DrawingVisual();
var drawingContext = visual.RenderOpen();
drawingContext.DrawRectangle(brush, null, new Rect(new Point(0, 0),
new Point(element.RenderSize.Width, element.RenderSize.Height)));
drawingContext.Close();
target.Render(visual);
PngBitmapEncoder encoder = new PngBitmapEncoder();
BitmapFrame outputFrame = BitmapFrame.Create(target);
encoder.Frames.Add(outputFrame);
using (FileStream file = File.OpenWrite("TestImage.png"))
{
encoder.Save(file);
}
}