2012-06-28 65 views
1

我正在開發MFC應用程序。我正在使用Visual Studio自帶的.bmp圖像。我通過添加資源對話框導入bmp,給它一個唯一的名稱並創建一個CImageList。然後我設置列表控件中的圖像列表:使用MS Visual C++ 2008與MFC處理.bmp圖像時的顏色問題

CListCtrl m_CIDList; 
CImageList m_ImgList; 

//......... 

m_ImgList.Create(IDB_MYBITMAP, 15, 0, RGB(255, 255, 255)); 
m_CIDList.SetImageList(&m_ImgList, LVSIL_STATE); 

我遇到的問題很奇怪。只有某些顏色會出現,通常只有紅色和灰色。我嘗試過使用不同的位深度,但這並沒有改變。 這裏是BMP看起來像在VS圖像編輯器:

BMP image in editor

當圖標顯示在列表控件中,只有少數紅魔的都出現了,所有的綠色顯示出來灰色。

我不太清楚發生了什麼,有沒有人知道發生了什麼?

解更新

m_ImgList.Create(15, 15, ILC_MASK | ILC_COLOR24, 0, 0); 
CBitmap bmp; 
bmp.LoadBitmap(IDB_MYBITMAP); 
m_ImgList.Add(&bmp, RGB(255, 255, 255)); 
m_CIDList.SetImageList(&m_ImgList, LVSIL_STATE); 
+1

不要在Visual Studio中打開/編輯超過16種顏色的位圖。這是「背後」的一種痛苦,也是我與VS一起工作的主要寵物之一。 – Max

回答

4

當創建圖像列表和沒有顏色值給定,默認顏色模式是ILC_COLOR4只允許16種預定義的顏色對圖像。位圖中的所有顏色都被映射到這16種顏色。對於全色位圖使用ILC_COLOR24