You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

FMX框架中TBitmap.SetSize是否会自动初始化像素数据?

结论

你给出的代码运行后,像素缓冲区不会被初始化为0,会残留内存中的随机数据。

行为说明

  • FMX框架的TBitmap.SetSize设计行为和VCL不同:VCL的位图申请内存时默认会做清零处理,而FMX出于跨平台性能优化的考量,SetSize仅完成对应尺寸的显存/内存空间申请,不会额外执行初始化操作,这一特性确实未在10.4版本的官方文档中明确标注。
  • 你实测到的部分设备不初始化的情况是符合FMX底层实现逻辑的,不要依赖任何隐式的初始化行为,如果业务要求像素初始为全透明,必须显式调用Bmp.Clear(0)。
  • 该行为在Delphi 10.4 Windows 32位目标下稳定复现,跨平台编译到Android、iOS等其他目标时也会保持同样的逻辑,不存在Windows平台特殊处理。

内容的提问来源于stack exchange,提问作者XylemFlow

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 13:36:03