Probleme de rafraichissement - C++ - Programmation
Marsh Posté le 22-03-2004 à 16:05:51
glRaZ a écrit : Bonjour, |
Ben je suis pas un expert, mais 10 images par secondes, c'est pas assez, non?
25 serait mieux, non?
Marsh Posté le 22-03-2004 à 16:23:59
je connais pas c++builder, mais ce que tu décris ressemble à du flickering
http://bcbdev.com/faqs/faq34.htm
Marsh Posté le 22-03-2004 à 16:24:43
non, je me suis mal exprimé.
ce n'est pas vraiment un probleme de scintillement... je ne sais pas trop commen dire mais on dirait que l'image clignotte. Comme si elle était affiché alors qu'elle n'a pas été chargée entièrement.
D'après un de mes profs, ça viendrais du fait que le rafraichissement de l'image et de l'ecran ne sont pas synchronisé... Mais comment on fait ça ??
Marsh Posté le 22-03-2004 à 16:33:03
oui escuse moi, je répondais à therier quand tu as posté ta réponse.
Effectivement ça à l'air d'être ça... mais j'ai un peu de mal à comprendre...
Je vais essayé de creuser, merci.
Marsh Posté le 22-03-2004 à 16:38:09
Citation : D'après un de mes profs, ça viendrais du fait que le rafraichissement de l'image et de l'ecran ne sont pas synchronisé... |
Parce qu'ils s'effectuent les 2 en parallèle ?
Citation : Mais comment on fait ça ?? |
Demandes-lui...
Il doit faire référence à vertical retrace, chose dont on se préoccupait sous DOS.
Sous Windows, hum... j'y ai jamais réfléchi... y'a pas ce problème, je sais pas trop pourquoi. Le driver doit faire ce qu'il faut.
Les clignotements sont généralements dus au fait que la fenêtre est effacée (d'une couleur blanche...) avant d'être redessinée. Du coup, le fonc blanc apparait durant un court instant et ça flash. Essaie de désactiver une prorpiété genre erase background.
Si t'as des flash blanc, c'est quasi sûr que c'est ça.
Mais y'a une autre forme de flickering, mais le composants haut niveau genre la VCL blittent leur dessin, donc ça devrait pas être ton cas.
Marsh Posté le 22-03-2004 à 16:40:54
pour expliquer en gros (avec ce que je me souviens), quand la fenetre recoit un message pour dessiner (WM_PAINT), le message WM_ERASEBACKGROUND est également envoyé. par défaut la fenetre va alors effacé l'ancien dessin par du blanc. Donc, entre le moment ou tu demandes à afficher et le moment ou tu réaffiches ton image, on "efface" en intercalant "une image blanche".
tu peux surcharger la méthode onerasebackgnd (celle résultant du message wm_erasebackgnd) pour qu'elle ne fasse rien,
sinon, il y a d'autres methodes (double buffering).
Marsh Posté le 22-03-2004 à 17:02:50
effectivement, je pense aussi que c'est dû au fait que l'image est remplacée par un fond blanc.
Je vais tester ça dès ce soir.
Marsh Posté le 22-03-2004 à 17:07:04
suis le lien que je t'ai indiqué, apparemment ils expliquent comment traiter le pb
Marsh Posté le 23-03-2004 à 12:42:26
Ca marche !!!
C'était effectivement dû à un problème de fliker.
Merci pour ton lien Youmoussa, il m'a été très utile.
En fait, j'ai remplacé mon Timage par un PaintBox et j'ai redéfinit la méthode paint().
Merci beaucoup !
Marsh Posté le 22-03-2004 à 16:00:56
Bonjour,
J'affiche une série de bitmap dans un controle Timage (C++Builder) avec une vitesse de 10 image par seconde environ. Il doit y avoir un problème au niveau du rafraichissement puisque l'image scintille par endroit.
J'utilise la méthode CreateDIBitmap pour créer mes images.
Merci