Vitesse de déplacement d'un composant
Bonjour à tous.
Je fais un déplacement pixel par pixel d'un composant (un simple TPaintBox 20/20 avec dessin d'un rectangle).
Code:
1 2 3 4 5 6 7 8 9 10 11 12
| procedure TForm1.SpeedButton1Click(Sender: TObject);
var
i: integer;
begin
for i:= 1 to 1000 do
begin
Paintbox1.Left:= i;
Application.ProcessMessages;
Sleep(1);
end;
Beep;
end; |
Il faut 16 secondes pour parcourir les 1000 pixels (bien que le Sleep = 1 ms).
L'utilisation d'un Timer donne la même chose.
1000/16 = environ 60 images/seconde, ce qui correspond à la fréquence de mon écran (60Hz).
Ok, mais le même test avec le PaintBox rendu invisible prend aussi 16 secondes !!!
L'événement OnPaint n'est plus appelé (normal), et il me semble que le taux de rafraichissement écran-carte graphique ne devrait plus jouer.
Pouvez-vous me fournir une explication ?
Merci d'avance.
Cordialement
Thierry
PS: Lazarus v1.2.6 sous Windows7