如何使用RenderTargetBitmap创建BIG位图?

时间:2011-04-02 08:44:17

标签: wpf bitmap

我需要使用RenderTargetBitmap存储一个大的Visual作为位图图像,而不会获得Out-Of-Memory异常。实现这一目标的最佳方法是什么?

我可以毫不费力地存储视觉屏幕的大小(假设是1920x1200像素),但是当视觉效果非常大(20000x20000像素)时会发生崩溃。

也许没有使用RenderTargetBitmap?有其他选择吗?

注意:最终商店目标是一个文件,有损.jpg或无损.png。

2 个答案:

答案 0 :(得分:2)

20000 x 20000像素= 400000000像素。每像素4个字节= 1.5 Gb(未压缩数据)

这太大了。

我会创建多个图像并拼接它们或使用更小的图像并将它们用作图块。

答案 1 :(得分:2)

您是否考虑过创建XPS文档? Convert WPF (XAML) Control to XPS Document 基本上,您可以使用可视元素并将其转储到Microsoft的PDF版本中 - 标准查看器现在通常安装在盒子上,并且内置在Win 7中。 XPS文档的优点是它是基于矢量的,所以它只是存储绘图指令。 (您可以看到如何将XPS文档重命名为ZIP并解压缩。)

如果您的视觉效果中已嵌入了较大的光栅类型图像,则可能无效,但需要尝试。