Можно ли создать CImageList с прозрачностью альфа-смешивания?

Я хотел бы знать, если возможно создать 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));

1 ответ

Решение

Не используйте ILC_MASK флаг (из MSDN):

Использование 32-битных сглаженных иконок

Списки изображений Windows XP, представляющие собой наборы изображений, используемых с определенными элементами управления, такими как элементы управления списком, поддерживают использование 32-разрядных сглаженных значков и растровых изображений. Значения цвета используют 24 бита, а 8-значные используются в качестве альфа-канала на значках. Чтобы создать список изображений, который может обрабатывать изображение размером 32 бита на пиксель (bpp), вызовите ImageList_Create передача функции в ILC_COLOR32 флаг.

Другие вопросы по тегам