小编Ama*_*mar的帖子

使用RenderTargetBitmap创建WPF Canvas区域的快照

我想在我的应用程序中创建一个Canvas区域的快照.我正在使用Visual Brush来获取快照并使用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);
    }

}   
Run Code Online (Sandbox Code Playgroud)

wpf png snapshot rendertargetbitmap

4
推荐指数
2
解决办法
1万
查看次数

标签 统计

png ×1

rendertargetbitmap ×1

snapshot ×1

wpf ×1