Est-il possible de créer un CImageList avec transparence alpha de mélange?
-
27-09-2019 - |
Question
Je voudrais knwo s'il est possible de créer un CImageList avec transparence alpha mélange.
Exemple de code qui crée un CImageList avec transparence laid (pas d'mélange 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));
La solution
Ne pas utiliser le drapeau ILC_MASK
( MSDN ):
Utilisation 32 bits Lissage icônes
imagelists Windows XP, qui sont collections d'images utilisées avec certains contrôles tels que la liste vue contrôles, prennent en charge l'utilisation de 32 bits icônes Lissage et bitmaps. Couleur valeurs utilisent 24 bits et 8 bits sont utilisé comme un canal alpha sur les icônes. Pour créer une liste d'images qui peut gérer une image, appel par pixel de 32 bits (bpp) le passage de la fonction
ImageList_Create
dans un drapeau d'ILC_COLOR32
.
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow