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

  FORUM HardWare.fr
  Programmation
  C++

  [wxWidget] Double buffering [Résolu]

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[wxWidget] Double buffering [Résolu]

n°969477
Nitro68
Posté le 02-02-2005 à 15:13:44  profilanswer
 

Bonjour !
 
Je viens demander votre aide encore une fois ! J'aimerai simplement savoir si on peut faire du double buffering avec wxWidget. J'ai l'impression qu'il n'existe pas une méthode ou classe de base pour le faire, comme en Java par exemple, donc je suppose qu'il faut finter.
 
Ce que j'ai fait :
 
dans mon OnPaint, je créé un MemoryDC avec une image dans lequel je fais tous mes paints (des DrawBitmap et DrawText en gros). Une fois terminé je fais un "blit" du memoryDC sur le DC normal.
 
Résultat => à chaque refresh ça scintille...  
 
Ca marche autrement ou il y a un truc à utiliser ?
 
Merci d'avance !
 
a+


Message édité par Nitro68 le 02-02-2005 à 19:50:34
mood
Publicité
Posté le 02-02-2005 à 15:13:44  profilanswer
 

n°969769
Nitro68
Posté le 02-02-2005 à 17:46:26  profilanswer
 

En fait comme dis je sais même pas si le double buffering aurait un intérêt. Moi ce qu'il me faut, c'est que ça scintille plus.
 
Pour expliciter un peu mieux, j'affiche 42 gif dans ma fenetre, et en passant ma souris sur telle ou telle image, j'affiche un texte en bas à droite, ou je change l'image, j'affiche d'autres trucs, etc.
 
Bref, quand la souris bouge, j'ai souvent des refresh, et à ce moment ça scintille. Sans utiliser le blit, on voit les images scintiller une à une en quelques sortes. Avec le blit, ca fait un seul gros scintillement mais toujours visible.
 
Autre chose que j'ai remarqué, la gestion des processus de Windows me fait prendre environ 1 Mo de mémoire utilisée à chaque refresh, pourtant je réallou pas d'image, donc là je comprends pas;
 
Voilà le code de base du paint, sans faire de blit :
 

Code :
  1. wxPaintDC real_dc(this);// le DC
  2.   real_dc.DrawBitmap(*new wxBitmap(*new wxImage("img/map/map.gif" )), 0, 0, true);
  3. for (unsigned int i = 0; i < game->getTerritoires().size(); ++i)
  4. {
  5.            int x,y;
  6.            x =game->getTerritoires().at(i)->getImageX();
  7.            y =game->getTerritoires().at(i)->getImageY();
  8.          
  9.         // affichage de toutes les images
  10. real_dc.DrawBitmap(game->getTerritoires().at(i)->getImage(), x, y, true);
  11. }
  12.        //affichage d'un message en bas de la fenetre
  13.       real_dc.DrawText(mesg.c_str(),10,550);


 
PS : trouver des tutoriaux, docs et autres sur wxWidget c'est chaud :(


Message édité par Nitro68 le 02-02-2005 à 17:47:25
n°969790
retrox
Posté le 02-02-2005 à 18:10:39  profilanswer
 

heu je connais pas wxWidget mais

Code :
  1. real_dc.DrawBitmap(*new wxBitmap(*new wxImage("img/map/map.gif" )), 0, 0, true);

ça me parait douteux. (je n'ose pas imaginer que ce soit le fonctionnement normal du DC)
 
Sinon pour ton probleme de scintillement, à mon avis c'est plutot un probleme de background qui se repeint avant de te donner la main pour dessiner (WM_ERASEBKGND dans l'API win32).

n°969820
Nitro68
Posté le 02-02-2005 à 18:51:26  profilanswer
 

Ah oui lol j'avou que mon DrawBitmap est un peu programmé à l'arrache, mais bon ce qu'il veut c'est un bitmap, et pour ça faut une image :). Je mettrai ce bitmap en attribut membre de ma classe plutot. Je vais voir l'histoire du background.  
 
Merci pour la réponse ;)

n°969849
Nitro68
Posté le 02-02-2005 à 19:51:07  profilanswer
 

Merci ça marche l'histoire du erase background (enfin faut capter l'evenement et mettre une méthode vide).
 
Merci :)


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

  [wxWidget] Double buffering [Résolu]

 

Sujets relatifs
Garder le résultat d'une requete en mémoire avec PHP Part 2 [Résolu][wxWidget] Analyser une image [résolu]
Problème include de fichier [résolu]Connaitre l'indice de l'item cliqué dans un jpopup menu [résolu]
[Résolu] Problème de requête[Resolu] [Mysql]Probleme d'insertion de string avec des anti slashs
[Problème résolu] Lancer un module VBA par VBException et thread principale [ resolu ]
Insérer une variable javascript dans dans HTML [RESOLU] 
Plus de sujets relatifs à : [wxWidget] Double buffering [Résolu]


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