image qui scintille [MFC] - Programmation
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.
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
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 ) 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.
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???