我注意到ICONINFO
包含两个位图。 如果我理解了correctrly, hbmMask
是图标的轮廓,它同时指定哪个部分应该是透明的,而hbmColor
是图标的实际颜色HBITMAP
。
所以我的问题是,为什么hbmMask
是必要的? 为什么不把alpha通道的信息放在hbmColor
? 它能够将它们组合成一个位图吗?
另外, Gdiplus::Bitmap
有一个接受HICON的构造函数 。 这是否意味着这个GDI +位图能够处理Alpha通道信息?
谢谢:)
为什么hbmMask是必要的? 为什么不把alpha通道的信息放在hbmColor中?
Alpha通道仅适用于32 bpp位图(8位alpha通道,每个8位红色,绿色和蓝色通道)。 具有1到8个bpp位图的图标因此必须与hbmMask
位图中的颜色位图分开存储透明度信息。
实际上, 除非使用PNG格式 , 否则甚至需要包含hbmMask
具有alpha通道的32位bpp位图。 在后一种情况下,掩码是从Alpha通道自动导出的。
另外,Gdiplus :: Bitmap有一个接受HICON的构造函数。 这是否意味着这个GDI +位图能够处理Alpha通道信息?
由于文档没有另外声明,所以您可以安全地假设构造函数将32 bpp HICON
转换为32 bpp位图。 如果像素格式合适(如果需要图标PixelFormat32bppARGB
),GDI +位图肯定能够存储Alpha通道。