WPF -- 使用RenderTargetBitmap将Canvas保存为图片

在WPF中对控件进行截图是非常方便的,使用RenderTargetBitmap即可实现。但是如果是对Canvas这种类型的容器控件进行截图,截图的范围可能不准。此时可以使用如下方法对Canvas进行截图,方法来自Clemens

public void WriteToPng(UIElement element, string filename)
{
    var rect = new Rect(element.RenderSize);
    var visual = new DrawingVisual();

    using (var dc = visual.RenderOpen())
    {
        dc.DrawRectangle(new VisualBrush(element), null, rect);
    }

    var bitmap = new RenderTargetBitmap(
        (int)rect.Width, (int)rect.Height, 96, 96, PixelFormats.Default);
    bitmap.Render(visual);

    var encoder = new PngBitmapEncoder();
    encoder.Frames.Add(BitmapFrame.Create(bitmap));

    using (var file = File.OpenWrite(filename))
    {
        encoder.Save(file);
    }
}
转载请注明出处,欢迎交流。
原文地址:https://www.cnblogs.com/louzixl/p/14679911.html