Image transparante sans font fixe

Suisse00 Messages postés 83 Date d'inscription vendredi 13 juin 2003 Statut Membre Dernière intervention 12 octobre 2005 - 29 juin 2005 à 03:17
cs_obby Messages postés 91 Date d'inscription vendredi 10 octobre 2003 Statut Membre Dernière intervention 12 octobre 2006 - 29 juil. 2005 à 19:19
Bon voilà j'essai depuis quelque temps de faire en sorte que mon bitmap
sois transparent. J'ai réussi mais le problème c'est que pour le moment
je dois utiliser un font fixe. A la basse sa cause aucun problème, mais
si je met des statics, ou autre composante de windows et bien sa
clignote (du au fait que le DC est afficher par dessus).



J'ai penser faire un PrintScreen de ma fenêtre pour que le statics y sois présent et comme cela on vera pas de clignotement.



Si vous avez des idées :)



Note: On peut ce référer a la source http://www.cppfrance.com/code.aspx?id=22723 pour un bitmap transparent.

------------------------------------------
Votre dévoué posseur de question :D

4 réponses

cs_obby Messages postés 91 Date d'inscription vendredi 10 octobre 2003 Statut Membre Dernière intervention 12 octobre 2006
28 juil. 2005 à 11:40
Salut,



En fait, tu peut régler ton problème en faisant du "double
buffer" (je crois que ca s'appel comme ca). J'avais le meme problème et
je l'ai résolu grace à ca. Grossomodo, tu fait :

//----------------------------------------------------------------------------------------------------------

void CTonAppliView::OnDraw(CDC* pDC)

{

....



CDC
MemDCF;



CBitmap MemBmpF;





MemDCF.CreateCompatibleDC(pDC);



MemBmpF.CreateCompatibleBitmap(pDC,RFace.Width (),RFace.Height
());


CBitmap
*pOldBitmap = MemDCF.SelectObject(&MemBmpF);

//-----------------------------------------------------------------------------------------------------------

//tu travaille sur le MemDCF

//-----------------------------------------------------------------------------------------------------------

//tu envoie la totalité de ton dessin vers le DC de l'écran


pDC->BitBlt
(0,0,RFace.Width (),RFace.Height (),&MemDCF,0,0,SRCCOPY);



MemDCF.SelectObject(pOldBitmap);



DeleteDC(MemDCF);



//----Voili voilou
0
cs_obby Messages postés 91 Date d'inscription vendredi 10 octobre 2003 Statut Membre Dernière intervention 12 octobre 2006
28 juil. 2005 à 11:41
j'ai oublié de préciser que RFace est un CRect
0
Suisse00 Messages postés 83 Date d'inscription vendredi 13 juin 2003 Statut Membre Dernière intervention 12 octobre 2005
29 juil. 2005 à 01:39
Le double buffer est utiliser contre le clignotement de l'image (ex si tu dois dessiner beaucoup de chose en peu de temp).

Sinon pour l'effet de trasparance je peut utiliser SRCPAINT (si je me trompe pas) sa peut sensiblement faire de la transparance au détriment du noir qui serra effacer.

Sinon je crois que je vais devoir capturer le HDC de la fenêtre puis redesinner par dessus et afficher.

------------------------------------------
Votre dévoué posseur de question :D
0
cs_obby Messages postés 91 Date d'inscription vendredi 10 octobre 2003 Statut Membre Dernière intervention 12 octobre 2006
29 juil. 2005 à 19:19
Ca peut peut-être t'aider (c'est pas de moi mais de petzold):



// Select bitmaps into memory DCs





hdcMemImag = CreateCompatibleDC (hdc) ;


SelectObject (hdcMemImag, hBitmapImag) ;

hdcMemMask = CreateCompatibleDC (hdc) ;

SelectObject (hdcMemMask, hBitmapMask) ;





// Do the bitblts

BitBlt (hdc, x, y, cxBitmap, cyBitmap, hdcMemMask, 0, 0, 0x220326) ;

BitBlt (hdc, x, y, cxBitmap, cyBitmap, hdcMemImag, 0, 0, SRCPAINT) ;





DeleteDC (hdcMemImag) ;


DeleteDC (hdcMemMask) ;
0
Rejoignez-nous