Difference entre HBITMAP et un mask

Signaler
Messages postés
539
Date d'inscription
vendredi 6 juin 2003
Statut
Membre
Dernière intervention
14 juillet 2010
-
Messages postés
539
Date d'inscription
vendredi 6 juin 2003
Statut
Membre
Dernière intervention
14 juillet 2010
-
voila j'ai transformer une Hicon en hbitmap, (avec de l'aide du forum)

avec ca

ICONINFO iconinfo={0};
BOOL ret = GetIconInfo(icon,&iconinfo);
HBITMAP iconbitmap = (iconinfo.hbmColor);

le truc c ke tous ce ki est autour de l'icone est noire.

j'aimerai faire la difference entre le mask ki lui delimite juste l'ico (qui est obtenu avec iconinfo.hbmMask) avec le hbitmap

(peut etre un XOR, un AND ,ou...)

Il faudrai kelek'1 ki soit callé en GDI....

merci de votre réponse

3 réponses

Messages postés
1138
Date d'inscription
mardi 10 juin 2003
Statut
Membre
Dernière intervention
25 janvier 2009
4
tu peux faire les operations XOR, AND , ect .... avec la fonction BitBlt, il faut prealebement avoir selectionne les bitmaps dans des HDC
Messages postés
539
Date d'inscription
vendredi 6 juin 2003
Statut
Membre
Dernière intervention
14 juillet 2010
1
ces ce ke je m'etait di mais je n'y suis po arriver donc un exemple en bout de code serait bien si tu peu

je te remercie d'avance

youpi
Messages postés
539
Date d'inscription
vendredi 6 juin 2003
Statut
Membre
Dernière intervention
14 juillet 2010
1
voila j'y suis arriver voici mon code

HICON icon = LoadIcon(hInstance,MAKEINTRESOURCE(IDI_ICO_MAIN));
ICONINFO iconinfo={0};
BOOL ret = GetIconInfo(icon,&iconinfo);
HBITMAP iconbitmap = iconinfo.hbmColor, iconbitmapmask=iconinfo.hbmMask;

BITMAP bmpInfo;
GetObject(iconbitmap,sizeof(BITMAP),&bmpInfo);

HDC hDC=GetDC(hWnd);
HDC hdc_iconbitmap=CreateCompatibleDC(hDC);
HDC hdc_iconbitmapmask=CreateCompatibleDC(hDC);
ReleaseDC(hWnd, hDC);

HBITMAP oldbmphdc=(HBITMAP) SelectObject(hdc_iconbitmap, iconbitmap);
HBITMAP oldbmphdcmask=(HBITMAP) SelectObject(hdc_iconbitmapmask, iconbitmapmask);

BitBlt(hdc_iconbitmap,0,0,bmpInfo.bmWidth,bmpInfo.bmHeight,hdc_iconbitmapmask,0,0,SRCINVERT);

HBITMAP h_Bit = (HBITMAP) CopyImage(iconbitmap,IMAGE_BITMAP,(int)GetSystemMetrics(SM_CXMENUCHECK),(int)GetSystemMetrics(SM_CYMENUCHECK),0);

SetMenuItemBitmaps(hMenuPopup,ID_POPUP_ABOUT,MF_BYCOMMAND,h_Bit ,h_Bit);

merci JCDjcd pour ta reponse