begin process at 2012 02 12 04:24:45
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C

 > 

Windows

 > 

GUI

 > 

Double buffer win32


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Double buffer win32

samedi 12 août 2006 à 13:16:44 | Double buffer win32

Stepharcher

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 [}:)]
samedi 12 août 2006 à 13:20:23 | Re : Double buffer win32

vecchio56

Administrateur CodeS-SourceS
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

samedi 12 août 2006 à 15:01:53 | Re : Double buffer win32

Stepharcher

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 [}:)]
samedi 12 août 2006 à 15:04:41 | Re : Double buffer win32

vecchio56

Administrateur CodeS-SourceS
Réponse acceptée !
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

samedi 12 août 2006 à 15:07:33 | Re : Double buffer win32

Stepharcher

Merci ça marche très bien !

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


Cette discussion est classée dans : buffer, hdc, double, dc, compdc


Répondre à ce message

Sujets en rapport avec ce message

Device context et StretchBlt ? [ par tavernier ] Bonjour, je suis en train de faire un générateur de fractale et j'ai besoin de mettre la fractale de coté pour ne pas avoir à tout recalculer pour la Double Buffering [ par garslouche ] Salut !Je voudraid faire du double buffering mais même un truc simple ne fonctinne pas :HDC hDC = CreateCompatibleDC(hDestDC);MoveToEx(hDC,0,0,NULL);L Impression formatée [ par goutbouyo ] Salut,Je viens de réussir à imprimer uen edit box(grace aux sources de ce site), mais le problème c'est que tous les mots s'affichent à la suite ...J' Choosepixelformat & Setpixelformat [ par mondrone ] Voila, je developpe actuellement sur dev-c++, et l'utilisation de ces deux fonctions me renvoie une erreur de linkage. Je voudrais donc savoir ce qui Double buffering sur une CDialog (dessin sous MFC) [ par jul39dole ] Bonjour, je dois dessiner sur une boite de dialogue modale en MFC. Pour résoudre le problème de "scintillement", j'ai appliqué le double buffering. Se Double Buffer !!!!!!!!!!!! [ par BugcORE ] SA FAIT un bon moment que j'essai de fairefonctionner un Double Buffer !J'ai eu pas mal de problème avec !(U.C. 100%, Affiche rien, etc....)J'arrive m Sélection d'une bitmap dans un DC [ par vecchio56 ] Bonjour a tousJ'explique mon problème:Je charge une bitmap 8 bits à partir d'un fichier (je n'utilise pas LoadBitmap, qui crée une bitmap 32 bits en m j'essaye de tracez un cercle à l'aide d'une matrix Rotation sur une image [ par laura1978 ] Salut à tous,svp, je dois tracez un cercle à l'aide d'une matrix de rotation (dimension 2)et j'utilise la matrix suivante avec Coordonnés Homogene:(x' HDC vers HBITMAP [ par julien_boss ] Bonjour,j'ai un DC, contenant un dessin..., je souhaite pouvoir transférer son contenu dans un bitmap de type HBITMAP, afin ensuite de la mettre dans pr d'objet GDI qui augmente, help [ par gege1024 ] CPaintDC hdc(this);HBITMAP bit;BITMAP bitmap;CRect rect;GetClientRect(&rect);  bit= (HBITMAP) LoadImage (NULL,fic_img_abs,IMAGE_BITMAP,0,0,LR_DEFAULTS


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,858 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales