[MFC] image qui scintille

image qui scintille [MFC] - Programmation

Marsh Posté le 15-06-2002 à 22:39:32    

j'affiche une image dans la méthode OnPaint et elle scintille quand on redimensionne la fenêtre ou autre.
 
j'aimerais savoir comment résoudre ce probleme.
je me suis dis que de déssiner juste ce qu'il faut plutot que l'image entiere serait mieux mais comment faire???

Reply

Marsh Posté le 15-06-2002 à 22:39:32   

Reply

Marsh Posté le 15-06-2002 à 22:42:26    

il ne faut pas redessiner le background (WM_ERASEBKGND).
 
et si c'est une image animée, il faut faire du double buffering.

Reply

Marsh Posté le 15-06-2002 à 22:56:52    

si tu pouvais t'étendre un peu plus le sujet  :)  
 
je débute dans tous ce qui concerne le graphisme et j'aimerais avoir des explications un peu plus détaillé sur le double buffering.
 
 
pour le background ça marche niquel :) :) merci

Reply

Marsh Posté le 15-06-2002 à 23:10:59    

le principe est tout simple. sans double buffering, si tu veux afficher un personnage qui se déplace sur une image de fond, tu dessines l'image de fond puis le personnage à l'écran. en faisant ça, tu va d'abord voir l'image de fond, puis le personnage, qui provoque alors un scintillement.
 
le double buffering tient son nom du fait que (miracle :D) il y a deux buffers : un 'caché' dans lequel tu dessines, l'autre étant l'écran. tu dessines donc ton image de fond puis le personnage dans le buffer caché, puis tu affiches ce buffer à l'écran : plus de scintillement.
 
pour windows, tu passes par CreateCompatibleDC(), CreateCompatibleBitmap() pour créer ton buffer caché, BitBlt() pour l'afficher à l'écran. fais une recherche là-dessus sur ce forum, tu trouveras pas mal de topics sur le sujet, certains en C, d'autres en Delphi, etc., le tout en Win32. tu peux également chercher sur google, codeproject.com ( http://www.codeproject.com/gdi/flickerfree.asp par exemple).
 
avec cette technique, tu peux dessiner tout ce que dessine internet explorer, photoshop, flash, etc. si tu veux faire de la 3d ou de la 2d pour un jeu, tu passes alors par opengl ou directx.

Reply

Marsh Posté le 15-06-2002 à 23:19:37    

merci beaucoup pour ces informations :jap:

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed