各位大侠帮我看看,IDB_IMAGELIST是多个位图横向相连而成的长条型bmp,CImageList m_imageList;
m_imgList.Create(IDB_IMAGELIST, 32, 0, RGB(255,255,255));
m_imgList.SetBkColor(CLR_NONE);

//在下面,imageIndex指出要画哪个bmp,pt指出绘制位图的开始点
m_imgList->Draw(pDC, imageIndex, pt, ILD_NORMAL);可是画出来的图的颜色比原图的浅了好多,这是为什么呀?

解决方案 »

  1.   

    CImageList的Create方式要改一下。要用使用24位色和ILC_MASK
      

  2.   

    看你的bitmap色深多少?
    imgList.Create(色深| 屏蔽标志,...);用一个CBitmap来LoadBitmap然后,imgList.Add(&bmp);
      

  3.   

    if(::ImageList_GetIconSize(m_ImageList,&cx,&cy))
    {
    HICON hDrawIcon = m_ImageList.ExtractIcon(2);
    ::ImageList_GetIconSize(m_ImageList,&cx,&cy);
    CSize size(cx,cy);

    for(int i = 0; i < 3; i ++)
    {
    CBrush* brush = new CBrush(RGB(224-i*16,224-i*16,224-i*16));
    pDC->DrawState(CPoint(202-i, 102-i), size, hDrawIcon, DSS_MONO,brush);
    delete brush;
    } pDC->DrawIcon(CPoint(199, 99), hDrawIcon); DestroyIcon(hDrawIcon);
    }