我注意到ICONINFO
包含兩個位圖。如果我的理解是正確的,hbmMask
是圖標的輪廓,它同時指定哪個部分應該是透明的,而hbmColor
是用於圖標的實際顏色HBITMAP
。HBITMAP可以包含alpha通道信息嗎?
- https://msdn.microsoft.com/en-us/library/windows/desktop/ms648052(v=vs.85).aspx
- https://social.msdn.microsoft.com/Forums/vstudio/en-US/490fb15a-61a5-4a5d-a1a0-fed675975293/hbmmask-hbmcolor-in-iconinfo?forum=vcgeneral
所以我的問題是,爲什麼hbmMask
有必要嗎?爲什麼不把alpha通道的信息放入hbmColor
?它能夠將它們組合成單個位圖嗎?
此外,Gdiplus::Bitmap
有constructor which accepts a HICON。這是否意味着此GDI +位圖能夠處理Alpha通道信息?
謝謝:)
你在問錯誤的問題。是的,位圖可以存儲Alpha通道。然而,除了'AlphaBlend'(可能還有其他一些),GDI並不尊重alpha通道。本質上,位圖支持alpha通道,但API不支持。除此之外,[圖標文件可以存儲具有Alpha通道的PNG圖像](https://blogs.msdn.microsoft.com/oldnewthing/20101022-00/?p=12473),因此不需要遮罩。 – IInspectable
@IInspectable問題標籤爲GDI +,它實際上尊重alpha通道。另外PNG格式不需要圖標文件來支持Alpha通道。圖標中的任何32 bpp圖像都可以有一個alpha通道。 PNG僅用於可選壓縮。 – zett42
@ zett42:問題是詢問'ICONINFO','HBITMAP'和'HICON'。這些是Windows API中的數據類型,而不是GDI +。雖然您可以將32bpp位圖轉儲爲圖標文件,但[仍然需要添加掩碼](https://blogs.msdn.microsoft.com/oldnewthing/20101021-00/?p=12483/),即使你正在使用alpha通道。這對於圖標文件中沒有蒙版的PNG圖標是不同的。 – IInspectable