2011-04-28 65 views
6

我正在用C编写一个应用程序来解析Windows图标文件(ICO)。BITMAPINFOHEADER biHeight是我期望的两倍

当我在BITMAPINFOHEADER结构中读取现有图标项时,结构中的所有变量都包含预期的值,但biHeight应包含图像的像素高度,它总是它的两倍应该。

因此,举例来说,如果我有一个64×64的图标,biWidth是64,但biHeight是128

这是预期的行为?这是我第一次与BITMAPINFOHEADER打交道。

我主要从MSDN article on BITMAPINFOHEADER运营。

回答

8

是的,这是正常的。它是“AND”位图掩码和“XOR”位图掩码的附加高度,因此对于任何常规图标,它只是图标高度的2倍。 (这些掩码不再用于32位图标,它们是一个保留。)只需除以二。

+0

非常感谢您的快速和翔实的答复! – Michael 2011-04-28 02:28:40

+1

该图标应该包含一个有效的XOR掩码,人们在100%的时间内不会以32bpp的速度运行(或者也可以在较低的位深处包含图像) – Anders 2011-04-28 10:26:09

+0

请参见[本维基百科章节中的第二段](http://en.wikipedia .org/wiki/ICO_%28file_format%29#Icon_resource_structure)对此答案进行某种官方确认。 – sschuberth 2012-10-24 18:54:13

相关问题