【问题标题】:TImageviewer maximum sizeTImageviewer 最大尺寸
【发布时间】:2013-06-14 14:35:48
【问题描述】:

有谁知道 FireMonkey TImageViewer 中位图的最大宽度和高度是多少? 我在 TImageViewer 中绘制矢量图形。我只能放大到某个值,然后我得到一个内存异常。

【问题讨论】:

  • 导致异常的“特定值”是什么?什么是异常(您收到的 exact 异常消息)?很难回答“当我超过放大 TImageViewer 时未给您的值时发生的未指定异常”的问题?你能edit你的问题并提供更多细节吗?谢谢。
  • 位图图像的大小没有限制,请创建一个简单的示例来说明如何重现您的问题。
  • @PeterVonča 我也注意到了这个限制。如果您尝试将大图像(例如:8000 X 5000 像素)加载到 TImage 或 TBitmap 中,则会出现内存异常。
  • 我不太确定那个“确定的价值”是什么。这就是我想要弄清楚的。正如 Peter Vonča 所说,当图像过大时,会出现内存异常。如果我能确定图像的最大尺寸是多少,我可以进行检查以使图像不会超过最大值。
  • @slotomo,当这个问题发布时,我在我的机器上对其进行了测试,无论大小如何,它都能正常工作。刚才再次测试了 8000x5000 px jpeg & bmp 图像加载到 TImage 或 TBitmap 对我来说很好。这就是为什么我说他应该发布一个关于如何重现的简单示例,因为我根本无法触发该异常。在 XE3 和 XE4 上测试。

标签: delphi firemonkey delphi-xe3 firemonkey-fm2


【解决方案1】:

我已经在两台单独的计算机上对此进行了测试,看起来 Firemonkey 中位图的实际大小限制为 8000x8000 像素,这意味着宽度和高度分别上限为 8000 像素。

这是我观察到的,如果有人得到不同的结果,请告诉我。

您打算如何解决这个问题取决于您,我建议将源图像分解为多个部分,这样任何部分都不会超过限制,然后将每个部分分配给不同的位图组件(例如 TImageViewer),然后制作所有这些都是一个整体。

【讨论】:

  • 谢谢。在将其标记为答案之前,我将进行测试以确认。只有一个问题:这是否意味着宽度和高度分别限制为 8000,或者像素的总限制为 8000 x 8000,因此我可以将位图设置为 9000 x 7000 像素吗? ps..是否可以从user1980303更改我的帐户? :(
  • @user1980303,宽度和高度分别限制为8000像素,一旦超过限制就会抛出异常。
  • 如果您使用 Direct 10/Direct2D,实际上限制是 8192 像素 x 8192 像素(Delphi 使用 Direct 10,在 Direct 11 中您最多可以创建 16384 像素 x 16384 像素位图)。如果添加 GlobalUseDX10 := False;和 GlobalUseDirect2D := False;对于您的项目,您可以创建更大的位图(我相信最多 32767 像素 x 32767 像素)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-04-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-04-21
  • 2015-02-10
相关资源
最近更新 更多