Bonjour,

Je cherche à dessiner un bitmap dans dc avec transparence selon le mask "hbmpBlend"

ca marche pas;

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
void CtransparentDlg::DrawDIG(CDC *dc,int x,int y,void *sample)
{
	PDIG dh=(PDIG)sample;
	CDC globaldcmem;
	HBITMAP hBmpGlobal=CreateBitmap(32,32,1,32,NULL);
	
	globaldcmem.CreateCompatibleDC(dc);
	SelectObject(globaldcmem.m_hDC,hBmpGlobal);
	CDC dcmem;
	dcmem.CreateCompatibleDC(dc);

	dcmem.SetBkColor(0);
	dcmem.SetBkMode(  TRANSPARENT );
	SelectObject(dcmem.m_hDC,dh->hBmpBlend);
	globaldcmem.BitBlt(0,0,32,32,&dcmem,0,0,SRCINVERT);
	dcmem.SetBkColor(0);
	dcmem.SetBkMode(  TRANSPARENT );
	//dc->dcmemSetBkColor(0);
	SelectObject(dcmem.m_hDC,dh->hBmp);
	globaldcmem.BitBlt(0,0,32,32,&dcmem,0,0,SRCPAINT);
	dcmem.DeleteDC();
	globaldcmem.SetBkColor(0);
	globaldcmem.SetBkMode( TRANSPARENT );
	dc->BitBlt(x,y,32,32,&globaldcmem,0,0,SRCCOPY);
	DeleteObject(hBmpGlobal);
	globaldcmem.DeleteDC();

}
pouvez-vous m'aider ?
merci