6

我想知道是否可以创建一个具有 alpha 混合透明度的 CImageList。

创建具有丑陋透明度的 CImageList 的示例代码(无 alpha 混合)

CGdiPlusBitmapResource m_pBitmap;
m_pBitmap.Load(IDB_RIBBON_FILESMALL,_T("PNG"),AfxGetResourceHandle());

HBITMAP hBitmap;
m_pBitmap.m_pBitmap->GetHBITMAP(RGB(0,0,0),&hBitmap );

CImageList *pList=new CImageList;
CBitmap bm;
bm.Attach(hBitmap);
pList->Create(16, 16, ILC_COLOR32 | ILC_MASK, 0, 4);
pList->Add(&bm, RGB(255,0,255));
4

1 回答 1

5

不要使用ILC_MASK标志(来自MSDN):

使用 32 位抗锯齿图标

Windows XP 图像列表是与某些控件(如列表视图控件)一起使用的图像集合,支持使用 32 位抗锯齿图标和位图。颜色值使用 24 位,8 位用作图标上的 Alpha 通道。要创建可以处理每像素 32 位 (bpp) 图像的图像列表,请调用ImageList_Create传入ILC_COLOR32标志的函数。

于 2010-04-14T20:44:10.683 回答