在WPF中将Canvas导出为图片主要涉及以下关键步骤和注意事项:
- 核心实现方法
- 使用
RenderTargetBitmap
将Canvas渲染为位图,再通过PngBitmapEncoder
保存为PNG文件。需注意临时移除Canvas的布局变换(LayoutTransform)以避免渲染异常1。 - 示例代码片段:
CanvasExporter.cs
public static void ExportToPng(this Canvas canvas, Uri path) {
if (path == null) return;
Transform transform = canvas.LayoutTransform;
canvas.LayoutTransform = null;
Size size = new Size(900, 600);
canvas.Measure(size);
canvas.Arrange(new Rect(size));
RenderTargetBitmap renderTargetBitmap = new RenderTargetBitmap(
(int)size.Width, (int)size.Height, 96d, 96d, PixelFormats.Pbgra32);
renderTargetBitmap.Render(canvas);
using (FileStre