1

我正在开发一个 MFC 应用程序。我正在使用 Visual Studio 处理我自己的 .bmp 图像。我通过添加资源对话框导入 bmp,给它一个唯一的名称并创建一个 CImageList。然后我在列表控件中设置图像列表:

CListCtrl m_CIDList;
CImageList m_ImgList;

//.........

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

我遇到的问题很奇怪。只有某些颜色会出现,通常只有红色和灰色。我尝试过使用不同的位深度,但这并没有改变。这是 VS 中的图像编辑器中 bmp 的样子:

编辑器中的 BMP 图像

当图标显示在列表控件中时,只有少数红色显示,所有绿色显示为灰色。

我不太确定发生了什么,有人知道发生了什么吗?

解决方案更新

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);
4

1 回答 1

4

当创建图像列表并且没有给出颜色值时,默认的颜色模式是ILC_COLOR4只允许 16 种预定义的图像颜色。位图中的所有颜色都映射到这 16​​ 种颜色。

用于ILC_COLOR24全彩色位图。

于 2012-06-28T17:27:27.350 回答