C BitMapInfo的高度是我预期的两倍

C BitMapInfo的高度是我预期的两倍,c,winapi,icons,ico,C,Winapi,Icons,Ico,我正在用C编写一个应用程序来解析Windows图标文件(ICO) 当我在现有图标条目的BitMapInfo头结构中读取时,结构中的所有变量都包含预期值,除了BIHEIGH(应包含图像的像素高度)始终是其应有值的两倍之外 例如,如果我有一个64x64图标,biWidth是64,但是biHeight是128 这是预期的行为吗?这是我第一次处理BitMapInfo头文件 我主要是在操作。是的,这是正常的。它是“和”位图掩码和“异或”位图掩码的附加高度,因此对于任何普通图标,它只是图标高度的2倍。(这些

我正在用C编写一个应用程序来解析Windows图标文件(ICO)

当我在现有图标条目的
BitMapInfo头
结构中读取时,结构中的所有变量都包含预期值,除了
BIHEIGH
(应包含图像的像素高度)始终是其应有值的两倍之外

例如,如果我有一个64x64图标,
biWidth
是64,但是
biHeight
是128

这是预期的行为吗?这是我第一次处理
BitMapInfo头文件


我主要是在操作。

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

图标应包含有效的异或掩码,人们没有100%以32bpp的速度运行(或者也包括较低位深度的图像),请参阅,以获得此答案的官方确认。