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

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

4 голосов
/ 15 апреля 2010

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

Использование 32-разрядных сглаженных значков

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

...