如何从WPF组件获取快照



我们在WPF中有一个Grid组件,其中有几个Image组件。有些Image组件有动画

我们希望将生成的动画保存为一些连续的BMP帧。你能给我们一个提示吗?图形对象在WPF中存在吗?如果是,如何访问?

您可以使用RenderTargetBitmap将任何WPF控件保存到文件中,如下面的代码片段所示:

RenderTargetBitmap b = new RenderTargetBitmap(1000, 1000, 300, 300, PixelFormats.Pbgra32);
b.Render(controlToRender);
PngBitmapEncoder encoder = new PngBitmapEncoder();
encoder.Frames.Add(BitmapFrame.Create(b));
using (Stream s = File.Create(@"c:test.png"))
    encoder.Save(s);

WPF中有一个图形类,就像在Windows窗体中一样。对图像进行渲染控制的问题被多次提出。在我看来,如何做到这一点的最佳答案是这个WPF -在内存中获取元素的大小?

你也应该注意到,你必须等到图像被加载,正如这里所描述的RenderTargetBitmap不渲染包含的图像

你可以看看这个问题,如果你想渲染整个网格保存整个ListView的图片

通过组合这些问题,您应该能够创建数据网格的快照。我相信你可以尝试使用DispatcherTimer来捕获多个图像,这样动画就会在帧中显示。

最新更新