是否可以使用alpha混合透明度创建CImageList?

sor*_*rin 5 c++ mfc image alphablending mfc-feature-pack

如果可以创建具有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));
Run Code Online (Sandbox Code Playgroud)

MSN*_*MSN 5

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

使用 32 位抗锯齿图标

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

  • +1。从帖子中并不清楚,但选项不兼容。要么使用遮罩,要么使用带有 alpha 的 32bpp,但不能同时使用两者。 (3认同)