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));
Était-ce utile?

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
scroll top