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