Für kontinuierliches Drehen:
Anstatt:
Inc(Grad, 2);
folgendes:
Grad:=(Grad+2) mod 360;
... und
if Grad = 360 then Timer1.Enabled := false
weglassen.
Also so:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
XR := 40;
YR := 40;
X0 := Label1.left - XR;
Y0 := Label1.top;
Grad := 0;
Richtung := 1 //1 = mathematische pos. Drehsinn (gegen Uhrzeigersinn), -1 = entsprechend anders herum
Timer1.Enabled := true
end;
procedure TForm1.Timer1Timer(Sender: TObject);
begin
Grad:=(Grad+2) mod 360;
Label1.left := X0 + round (cos(2*Pi/360 * Grad) * XR);
Label1.Top := Y0 - round (sin(2*Pi/360 * Richtung * Grad) * YR);
end;
(Für sehr große Kreise Grad:=(Grad+1)mod 360, falls es ruckelt.)