代码如下:CImageList m_img
if( m_img.Create(IDB_BITMAP_TEST_LIST, 16, 16, ILC_COLOR24 ) )   /*创建一个图象列表,每个图象大小为16*16*/
{
    SetImageList(&m_img, TVSIL_NORMAL);                          /*绑定到CTreeCtrl控件上*/
}这样载入一个图片列表,然后在界面查看图标,明显发现颜色和我用windows直接打开图标不一样.
不知道是怎么回事.
谁指点下.

解决方案 »

  1.   

    请问你的图片(IDB_BITMAP_TEST_LIST)是16色的吗?
      

  2.   

    我的IDB_BITMAP_TEST_LIST是24色
     
      

  3.   

    m_imageList.Create(16, 16, ILC_COLORDDB | ILC_MASK, 5, 1);//icon 16*16最常见 (ILC_MASK使用BMP时才用到,去掉底色用的 (5:初始存放5个图标,1,每次增加1个,这2参数随意,基本没用)
    参数用 ILC_COLORDDB 基本没事,
      

  4.   

    楼上的哥们,按你说的做了是可解决问题.
    代码个更改如下:
      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载入图片且不会出现偏色现象呢???
      

  5.   

    用 32 位的:
    m_ilAnimateImageList.Create(16, 16, ILC_COLOR32 | ILC_MASK, 1, 1)
    就是了
      

  6.   


    你把这里换成 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);
    }