Я хотел бы к knwo, если возможно создать CImageList с альфа-прозрачностью смешивания.
Пример кода, который создает CImageList с ужасной прозрачностью (никакое альфа-смешивание)
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));
Не используйте флаг ILC_MASK
(из MSDN ):
Использование 32-битной защиты Псевдонимы значков
Списки изображений Windows XP, которые представляют собой коллекции изображений, используемых с определенными элементами управления, такими как элементы управления списком-представлением , поддерживают использование 32-битных {{1} }} сглаженные значки и растровые изображения. Значения цвета используют 24 бита, а 8 бит используются в качестве альфа-канала на значках. Для создания списка изображений, который может обрабатывать 32-битные -пиксель (бит / пиксель) изображения, вызовите функцию
ImageList_Create
, передав во флагеILC_COLOR32
.