Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1580 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  Impossible d'afficher un bitmap transparent dans un DC memoire...

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Impossible d'afficher un bitmap transparent dans un DC memoire...

n°436733
dea
Posté le 23-06-2003 à 13:50:54  profilanswer
 

Et oui, alors qu'avec le code ci dessous j'arrive a afficher une image transparente (LPPICTURE, interface IPICTURE) dans le contexte graphique courant (hdc), si je cree un DC memoire, l'image s'affiche bien, mais elle n'est plus transparente.
Quelqu'un a t'il une idee a me soumettre pour resoudre le pb ????
 

Code :
  1. RECT* Image::show( HDC hdc, int x = -1, int y = -1, int w = -1, int h = -1) {
  2. OLE_XSIZE_HIMETRIC width;
  3. OLE_YSIZE_HIMETRIC height;
  4. int l_x, l_y, l_w, l_h;
  5. LPPICTURE  picture = getPicture();
  6. //on cree un DC compatible bidon
  7. HDC memDC = CreateCompatibleDC( hdc ) ;
  8. picture->get_Width( &width );
  9. picture->get_Height( &height );
  10. CSize sz( width, height );
  11. CDC *dc = new CDC();
  12. dc->Attach(memDC);
  13. dc->HIMETRICtoDP( &sz );
  14. HBITMAP hBmp = CreateCompatibleBitmap(hdc, width, height);
  15. HBITMAP oldBmp = (HBITMAP)SelectObject(memDC, hBmp);
  16. //La, ca fonctionne, mon image s'affiche en transparence
  17. picture->Render( hdc,
  18.                   0, 0,  // dest loc
  19.                   sz.cx, sz.cy,   // destination size
  20.                   0, height,  // source loc
  21.                   width, -height, // source size
  22.                   NULL );
  23. //La, elle s'affiche, mais avec du noir a la place de la transparence...
  24. picture->Render( memDC,
  25.                   0, 0,  // dest loc
  26.                   sz.cx, sz.cy,   // destination size
  27.                   0, height,  // source loc
  28.                   width, -height, // source size
  29.                   NULL );
  30. // on copie depuis le DC memoire dans le DC courant
  31. BitBlt( hdc, 0, 0, width, height, memDC, 0, 0, SRCCOPY ) ;


Message édité par dea le 23-06-2003 à 14:11:36
mood
Publicité
Posté le 23-06-2003 à 13:50:54  profilanswer
 

n°437157
HelloWorld
Salut tout le monde!
Posté le 23-06-2003 à 17:50:20  profilanswer
 

Je ne suis pas sûr, mais une image trasnparente en mémoire, je crois que ça n'a pas de sens. AMHA, tout se joue au moment du blit.
Utilise TransparentBlt au lieu de BitBlt, et ça devrait aller mieux :
http://msdn.microsoft.com/library/ [...] s_2y9g.asp


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  Impossible d'afficher un bitmap transparent dans un DC memoire...

 

Sujets relatifs
Script Liberation mémoire vive ?afficher un menu
Connection php-->ftp impossible de lire de contenu du serveur distantprobleme a la compilation pour afficher une fenetre avec SDL et opengl
[MFC] Icones d'une ListCtrl > fond noir > transparent[JAVA] Augmenter la mémoire dispo pour la machine virtuelle
Comment afficher une image au hasard ?IPCop : comment récupérer l'uptime pour l'afficher dans mIRC par ex ?
[VC++6] Afficher un message dans une fenêtre de débogageimpossible de centrer [résolu]
Plus de sujets relatifs à : Impossible d'afficher un bitmap transparent dans un DC memoire...


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR