IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Windows Discussion :

Problème de tracé de HBITMAP


Sujet :

Windows

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2011
    Messages
    905
    Détails du profil
    Informations personnelles :
    Localisation : France, Vienne (Poitou Charente)

    Informations forums :
    Inscription : Mai 2011
    Messages : 905
    Points : 85
    Points
    85
    Par défaut Problème de tracé de HBITMAP
    Bonjour,

    Je cherche à afficher un HBITMAP dans un controle d'ou la couleur clblack est transparent.

    La particularité , il recopie le contenue du controle HWND parent vers un context temporaire et recopie le hbitmap dans le context temporaire et le trace dans le controle.

    Bug : il recopie la position 0,0 du controle parent , ce n'est pas le probléme, je vais me débrouiller.

    Le probléme majeur : c'est que cela ne marche pas du tout !
    je dis bien ne marche pas du tout ! : Il trace rien ;

    Ne vous preoccupez pas de la fonction loadbitmap , elle fonctionne.


    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
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    DWORD WINAPI wndnew(HWND h,UINT message,WPARAM wparam,LPARAM lparam)
    {
    	switch (message)
    	{
    		
    		case WM_PAINT:
    			{
    				//oldwndproc(h,message,wparam,lparam);;
    				static HBITMAP hb=0;
    				if (hb==0)
    				{
    					hb=loadbitmap(_T("e:\\x\\png\\dlo.png"),0);
    				}
    				PAINTSTRUCT lp={0};
    				HDC dc=BeginPaint(h,&lp);
    				HDC dcparent=GetDC(GetParent(h));
    				//HDC dcmem=dcparent;
    				HDC dcmem=CreateCompatibleDC(dc);
    				HDC dcmembitmap=CreateCompatibleDC(dcparent);
    				HDC dcmemparent=CreateCompatibleDC(dcparent);
    				SelectObject(dcmembitmap,hb);
    				//BitBlt(dc,0,0,50,50,dcmem,0,0,SRCCOPY);
    				
    				BITMAP _bmp={0};
    				GetObject(hb,sizeof(BITMAP),&_bmp);
    				SetLastError(0);
    				BOOL b=BitBlt(dcmem,0,0,50,50,dcparent,0,0,SRCCOPY); //on recopie le contenu graphique du controle parent vers dcmem
    				int err=GetLastError();
    				b=TransparentBlt(dcmem,0,0,_bmp.bmWidth,_bmp.bmHeight,dcmembitmap,0,0,_bmp.bmWidth,_bmp.bmHeight,0); //on insert dans dcmem un HBITMAP avec couleur noir en tant que transparence
    				err=GetLastError();
    				SetLastError(0);
    				b=BitBlt(dc,0,0,50,50,dcmem,0,0,SRCCOPY); //on recopie le dcmem et le controle (dessin) ET CA NE MARCHE PAS !
    				err=GetLastError();
    				ReleaseDC(GetParent(h),dcparent);
    				DeleteDC(dcmembitmap);
    				DeleteDC(dcmem);
    				DeleteDC(dcmemparent);
    				
    				
    				
    				EndPaint(h,&lp);
    				return 0;
    			}
    		break;
    		
    	}
    	return oldwndproc(h,message,wparam,lparam);;
    }

    Pouvez - vous m'aider ?
    Avez - vous une solution ?
    Merci ;

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2011
    Messages
    905
    Détails du profil
    Informations personnelles :
    Localisation : France, Vienne (Poitou Charente)

    Informations forums :
    Inscription : Mai 2011
    Messages : 905
    Points : 85
    Points
    85
    Par défaut
    J'ai résolue mon probléme ,
    il fallait passer par un bitmap temporaire.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    HBITMAP bitmapparent = CreateBitmap(_orc.right,_orc.bottom, 1, 32, NULL);
    HGDIOBJ oparent=SelectObject(dcmem,bitmapparent);
    ....
    ...
    ...
    DeleteObject(bitmapparent);

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Lazarus] Problème de tracé avec la bibliothèque BGRABitMap
    Par ChPr dans le forum Lazarus
    Réponses: 1
    Dernier message: 14/01/2013, 14h17
  2. Problème de tracé de lignes
    Par nicogigo dans le forum Tkinter
    Réponses: 1
    Dernier message: 12/04/2010, 07h49
  3. Réponses: 4
    Dernier message: 08/04/2008, 16h50
  4. Réponses: 4
    Dernier message: 14/02/2007, 11h44
  5. Réponses: 8
    Dernier message: 17/05/2005, 18h08

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo