Probleme de rafraichissement

Probleme de rafraichissement - C++ - Programmation

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

Reply

Marsh Posté le 22-03-2004 à 16:00:56   

Reply

Marsh Posté le 22-03-2004 à 16:05:51    

glRaZ a écrit :

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


 
Ben je suis pas un expert, mais 10 images par secondes, c'est pas assez, non?
 
25 serait mieux, non?


---------------
XBox? http://www.gamertagdatabase.com
Reply

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

Reply

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 ??

Reply

Marsh Posté le 22-03-2004 à 16:27:59    

je persiste..

Reply

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.


Message édité par glRaZ le 22-03-2004 à 16:33:14
Reply

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.


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
Reply

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).

Reply

Marsh Posté le 22-03-2004 à 16:41:51    


 
grilled  :sweat:

Reply

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.

Reply

Marsh Posté le 22-03-2004 à 17:02:50   

Reply

Marsh Posté le 22-03-2004 à 17:07:04    

suis le lien que je t'ai indiqué, apparemment ils expliquent comment traiter le pb

Reply

Marsh Posté le 23-03-2004 à 12:42:26    

:bounce:  Ca marche !!!  :bounce:  
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 !  :hello:

Reply

Sujets relatifs:

Leave a Replay

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