【问题标题】:How do I Convert a canvas into an image如何将画布转换为图像
【发布时间】:2015-03-24 17:14:23
【问题描述】:

我希望在 WPF 中将画布转换为图像。我正在使用 RenderTargetBitMap 进行导出,效果很好。

我的问题是如果画布的高度超过最大整数值,在下面的代码中会出现异常。

RenderTargetBitmap renderBitmap =new RenderTargetBitmap((int)canvas.Width,(int)canvas.Height,96d,96d,PixelFormats.Pbgra32);

错误信息是

“值不在预期范围内”

那么如何将高度超过 39,000 像素的画布导出到图像?

【问题讨论】:

  • 整数最大值为 2,147,483,647。你还有一个问题。这很可能是直接 x 的限制,你不能有这么大的位图。您需要在渲染之前将其缩小。
  • 这也可能有帮助:stackoverflow.com/questions/222756/…
  • 感谢您的回复@XaverKapeller。你是对的,这个问题与图像大小有关。我试图缩小图像。但是按比例缩小后内容(文本)不可读。除了位图图像,还有其他方法可以导出大画布吗?

标签: c# wpf image canvas


【解决方案1】:

您可以将Canvas 放入ViewBox 控件中,并将其尺寸设置为更合理的尺寸。完成此操作后,您可以简单地从中创建一个按比例缩小的图像:

RenderTargetBitmap renderBitmap = new RenderTargetBitmap(
    (int)viewBox.Width,(int)viewBox.Height, 96d, 96d, PixelFormats.Pbgra32);

【讨论】:

  • 感谢您的回复@Sheridan。我试过“查看框”。但是按比例缩小后内容(文本)不可读。您能否建议任何其他方式来导出大画布,而不是位图图像。
猜你喜欢
  • 2017-09-08
  • 2012-04-10
  • 1970-01-01
  • 2018-06-26
  • 2021-11-23
  • 2011-11-15
  • 2011-11-22
相关资源
最近更新 更多