Bonjour à tous.

Je fais un déplacement pixel par pixel d'un composant (un simple TPaintBox 20/20 avec dessin d'un rectangle).

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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