Synchroniser une exécution avec le refresh vertical d'un moniteur

production1ae Messages postés 6 Date d'inscription mardi 29 décembre 2009 Statut Membre Dernière intervention 31 décembre 2009 - 30 déc. 2009 à 22:17
Bacterius Messages postés 3792 Date d'inscription samedi 22 décembre 2007 Statut Membre Dernière intervention 3 juin 2016 - 31 déc. 2009 à 23:53
J'ai besion de synchroniser une exécution de code avec le refresh vertical d'un moniteur. J'ai essayer le TTimer mais sa flick, j'ai essayer une boucle avec application.processmessages mais sa bouffe trop le processeur.

J'ai trouver un TmicroTimer sur se cite mais là aussi ça bouffe trop le processeur. Je suis à court d'idée. J'ai chercher en vain sur le net et je n'ai pas rien trouver !!!

J'essais de faire scroler du text de droit à gauche à une vitesse constante sans flicker et je n'y arrive pas.

Comment fait-on pour générer un event à la fin de chaque balayage verticale ???

Merci à l'avance.

8 réponses

Caribensila Messages postés 2527 Date d'inscription jeudi 15 janvier 2004 Statut Membre Dernière intervention 16 octobre 2019 18
30 déc. 2009 à 23:23
Salut,

As-tu essayé :

procedure TForm1.FormCreate(Sender: TObject);
  begin
  DoubleBuffered := true;
end;
0
production1ae Messages postés 6 Date d'inscription mardi 29 décembre 2009 Statut Membre Dernière intervention 31 décembre 2009
30 déc. 2009 à 23:30
Oui mais aucune différance !!!
0
production1ae Messages postés 6 Date d'inscription mardi 29 décembre 2009 Statut Membre Dernière intervention 31 décembre 2009
30 déc. 2009 à 23:49
J'ai eu une idée temporaire !

Utiliser un TTimer avec un interval de 16 miliseconde et utiliser la méthode du TmicroTimer pour le .66666 restant.

(Ceci est pour un refresh rate de 60 image seconde.)

Je vais l'essayer !!!
0
Caribensila Messages postés 2527 Date d'inscription jeudi 15 janvier 2004 Statut Membre Dernière intervention 16 octobre 2019 18
31 déc. 2009 à 00:07
Ah? ok!

Je vois...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
production1ae Messages postés 6 Date d'inscription mardi 29 décembre 2009 Statut Membre Dernière intervention 31 décembre 2009
31 déc. 2009 à 02:56
Je viens de terminer mes tests:

Le TTimer ne fonctionne pas bien en dessous de 50 millisecondes alors on oublie !

J'ai essayer d'utiliser la fonction sleep pour enlever l'utilisation du processeur pour avoir un résultat interressant. Je me suis rendu à environ 4% mais j'ai toujours des flickers !!!

En synchronizant avec la carte video se serait génial car on aurait un timer précis et pas de flicker. Si on aurais besion d'un timer plus rapides, la possibilité de synchronizer avec le refresh horizontal nous donnerais un très bon timer !

J'espère toujours que quelqu'un à la solution !!!

Merci d'avance.
0
Bacterius Messages postés 3792 Date d'inscription samedi 22 décembre 2007 Statut Membre Dernière intervention 3 juin 2016 10
31 déc. 2009 à 03:17
Et avec un TThread, ça ne serait pas mieux ?

Cordialement, Bacterius !
0
production1ae Messages postés 6 Date d'inscription mardi 29 décembre 2009 Statut Membre Dernière intervention 31 décembre 2009
31 déc. 2009 à 17:42
Un TThread est une des choses que j'ai essayer mais aucune amélioration !!!
0
Bacterius Messages postés 3792 Date d'inscription samedi 22 décembre 2007 Statut Membre Dernière intervention 3 juin 2016 10
31 déc. 2009 à 23:53
Je te conseille le MMTimer, il est plus optimisé que le TMicroTimer (recherche MMTimer sur le site).

Cordialement, Bacterius !
0
Rejoignez-nous