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

Posted louzi

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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);
    }
}

以上是关于WPF -- 使用RenderTargetBitmap将Canvas保存为图片的主要内容,如果未能解决你的问题,请参考以下文章

winform 添加wpf 窗体怎么使用

vs2008中的框架wpf怎么使用?

wpf使用C#控件

cefsharp wpf怎么用

WPF 精修篇 WPF 使用ActiveX

wpf中 combox怎样使用