代码如下:CImageList m_img
if( m_img.Create(IDB_BITMAP_TEST_LIST, 16, 16, ILC_COLOR24 ) ) /*创建一个图象列表,每个图象大小为16*16*/
{
SetImageList(&m_img, TVSIL_NORMAL); /*绑定到CTreeCtrl控件上*/
}这样载入一个图片列表,然后在界面查看图标,明显发现颜色和我用windows直接打开图标不一样.
不知道是怎么回事.
谁指点下.
if( m_img.Create(IDB_BITMAP_TEST_LIST, 16, 16, ILC_COLOR24 ) ) /*创建一个图象列表,每个图象大小为16*16*/
{
SetImageList(&m_img, TVSIL_NORMAL); /*绑定到CTreeCtrl控件上*/
}这样载入一个图片列表,然后在界面查看图标,明显发现颜色和我用windows直接打开图标不一样.
不知道是怎么回事.
谁指点下.
参数用 ILC_COLORDDB 基本没事,
代码个更改如下:
CBitmap bitmap;
bitmap.LoadBitmap(IDB_BITMAP_TEST_LIST);
m_img.Create(16, 16, ILC_COLOR24|ILC_MASK,2,2);
m_img.Add(&bitmap, RGB(0,0,0));
SetImageList(&m_img, TVSIL_NORMAL);
但是这样要多写代码.
有没有什么设置可以让我直接用Create载入图片且不会出现偏色现象呢???
m_ilAnimateImageList.Create(16, 16, ILC_COLOR32 | ILC_MASK, 1, 1)
就是了
你把这里换成 32 位色深就是最好不过的了,以后换图片也不用再来改代码了。
代码就是这样的,想减少是几乎很难的了,不过最好做一下调整:CBitmap bitmap;
CImageList m_img;
if (bitmap.LoadBitmap(IDB_BITMAP_TEST_LIST) && m_img.Create(16, 16, ILC_COLOR32 | ILC_MASK,2,2))
{
m_img.Add(&bitmap, RGB(0,0,0));
SetImageList(&m_img, TVSIL_NORMAL);
}