在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);    }}