Double buffer win32 [Résolu]

Signaler
Messages postés
117
Date d'inscription
samedi 12 avril 2003
Statut
Membre
Dernière intervention
8 septembre 2008
-
Messages postés
117
Date d'inscription
samedi 12 avril 2003
Statut
Membre
Dernière intervention
8 septembre 2008
-
Bonjour à tous !

J'ai récemment tenté le double buffer sous window avec GDI... Mais je ne comprend pas trop mon erreur. Quand je dessine directement sur mon DC, ça marche. Quand je crée un compatible DC, que je dessine tout dessus et que je plaque mon compatible DC sur mon DC... bah ça marche plus ^_^
Mon code ressemble à peu près à ça :

hwnd = CreateWindow(...);
hdc = GetDC(hwnd);
compDC = CreateCompatibleDC(hdc);

// Je dessine tout dans mon compDC, genre un rectangle ou une image
// Ensuite je place mon compDC dans mon DC
BitBlt(hdc, 0, 0, width, height, compDC, 0, 0, SRCCOPY);

Mais je comprend pas où est mon erreur... Est-ce que ça serait sur ma manière de dessiner ? Si c'est le cas alors pourquoi ça marche quand j'essaye directement sur mon hdc ?
Si quelqu'un pouvait me renseigner sur le problème ça serait sympa :)

Merci d'avance !

[}:)] Stéph [}:)]

4 réponses

Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
7
Non non tu as juste à selectionner la bitmap dedans. Après tu dessines dans compDC comme si c'était un DC normal. En fait tu ajoutes juste ces deux lignes et ca devrait marcher
HBITMAP hbmp = CreateCompatibleBitmap(hdc, width, height);
SelectObject(compDC, hbmp);

Et ne pas oublier
DeleteObject(hbmp); à la fin

_____________________________________
Un éditeur de ressources gratuit pour Windows
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
7
Pour un DC mémoire, tu dois seléctionner une bitmap dedans:

hwnd = CreateWindow(...);
hdc = GetDC(hwnd);
compDC = CreateCompatibleDC(hdc);
HBITMAP hbmp = CreateCompatibleBitmap(hdc, width, height);
SelectObject(compDC, hbmp);

// Je dessine tout dans mon compDC, genre un rectangle ou une image
// Ensuite je place mon compDC dans mon DC
BitBlt(hdc, 0, 0, width, height, compDC, 0, 0, SRCCOPY);

_____________________________________
Un éditeur de ressources gratuit pour Windows
Messages postés
117
Date d'inscription
samedi 12 avril 2003
Statut
Membre
Dernière intervention
8 septembre 2008

Oki donc si je veux dessiner un rectangle avec la fonction rectangle, il faut que je me débrouille pour en faire un bitmap puis que je le place dans mon DC mémoire. Merci j'vais essayer ^_^

[}:)] Stéph [}:)]
Messages postés
117
Date d'inscription
samedi 12 avril 2003
Statut
Membre
Dernière intervention
8 septembre 2008

Merci ça marche très bien !

[}:)] Stéph [}:)]