2013-09-25 21 views
0

在MFC中,當我創建一個圖像列表,使用這些標誌:MFC圖片列表創建ILC_COLORDDB搞亂了突出

m_ImageListThumb.Create(0x20, 0x20, ILC_COLORDDB | ILC_COLOR32, 0, 1); 

http://i.stack.imgur.com/ZYEQ9.png

m_ImageListThumb.Create(0x20, 0x20, ILC_COLOR32, 0, 1); 

這方面顯示了正確

http://i.stack.imgur.com/nyTSj.png

我似乎需要使用ILC_COLORDDB,否則有時highlig使用alpha處理圖像不會顯示突出顯示的藍色。但我的問題是如何修復藍色覆蓋層以保持平滑,所以在使用ILC_COLORDDB時不會有顆粒感。

我該如何解決這個問題,以便ILC_COLORDDB在點擊時給出一個很好的平滑藍色突出顯示。

回答

0

ILC_COLORDDBILC_COLOR32是互斥的,您不能使用這兩個標誌。看看他們的價值觀:

#define ILC_COLORDDB 0x000000FE 
#define ILC_COLOR32 0x00000020 

如果ILC_COLORDDB指定的圖像列表使用與CreateCompatibleBitmap是與當前顯示兼容創建的位圖,讓你從這個得到的結果將與當前的顯示設置而異。

+0

嗯,有趣。我正在使用Windows 8來運行該應用程序。任何想法爲什麼使用ILC_COLOR32會得到一個很好的藍色,而CreateCompatibleBitmap不會? –

+0

不,實際上這似乎很奇怪,因爲Win8不支持低於32 bpp,所以你期望兼容的位圖最終也會以32 bpp結尾。但我建議不要試圖使用'ILC_COLORDDB',而是使用'ILC_COLOR32'並嘗試解決你的alpha問題(你可能需要爲此發佈另一個問題)。 –