【发布时间】:2011-11-19 22:46:28
【问题描述】:
Delphi & C++ Builder 有一个带有 Scanline 属性的 TBitmap 类,它返回位图像素的内存。当我查看 BMP 文件的十六进制编辑器时,这似乎有所不同。
我正在尝试将 C++ Builder 应用程序移植到 Java,并希望了解 Scanline 中的算法。如果我有文件,如何像 Scanline 那样生成内存阵列? Scanline 背后的具体规格是什么?
澄清:BMP 是 Windows 24 位 DIB。我没有在代码中提供任何其他信息; C++ Builder 似乎将它加载到某种类型的内存结构中,但它不是逐字节的。想知道那个结构的规格是什么。
【问题讨论】:
-
“TBitmap”这个名字并不一定与微软的“位图”文件格式有关,你知道的! Delphi“TBitmap”中的“扫描线”属性只是一条光栅线——不多也不少。
-
位图文件的像素格式是什么,如何将其加载到 TBitmap 中?您的位图是自上而下存储还是自下而下存储?
-
你想了解结构的哪一部分? TBitmap 字段,还是像素数据?
-
@paul Delphi TBitmap 是 Windows HBITMAP 的松散包装器
-
Scanline是一个属性,它为您提供每个扫描线基本的索引访问到 TBitmap 实例后面的 DIBSection。你具体有什么不明白的?
标签: delphi bitmap c++builder porting vcl