Witam...
Jak poprawić poniższe dyrdymały aby wskazówki nie pozostawiały sladów na tarczy zegara?
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
ExtCtrls, Menus, Grids;
type
TForm1 = class(TForm)
Timer1: TTimer;
procedure Timer1Timer(Sender: TObject);
procedure FormPaint(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
stary:real;
implementation
{$R *.DFM}
procedure TForm1.Timer1Timer(Sender: TObject);
var
czas:real;
xt,yt:integer;
alfarad:real;
begin
czas:=time;
Form1.Canvas.Pen.color:=clwhite;
Form1.Canvas.Pen.Width:=1;
Form1.Canvas.MoveTo(clientwidth shr 1, clientheight shr 1);
alfarad:=stary*4*pi-pi/2;
xt:=(clientwidth+round((clientwidth shr 1)*cos(alfarad))) shr 1;
yt:=(clientheight+round((clientheight shr 1)*sin(alfarad))) shr 1;
//Form1.Canvas.LineTo(xt,yt);
//Form1.Canvas.Pen.Width:=1;
//Form1.Canvas.MoveTo(clientwidth shr 1, clientheight shr 1);
alfarad:=(round(stary*24*3600) mod 3600 - 900)*pi/1800;
xt:=(clientwidth+round((clientwidth-35)*cos(alfarad))) shr 1;
yt:=(clientheight+round((clientheight-35)*sin(alfarad))) shr 1;
Form1.Canvas.LineTo(xt,yt);
Form1.Canvas.Pen.color:=clyellow;
Form1.Canvas.Pen.Width:=3;
Form1.Canvas.MoveTo(clientwidth shr 1, clientheight shr 1);
alfarad:=czas*4*pi-pi/2;
xt:=(clientwidth+round((clientwidth shr 1)*cos(alfarad))) shr 1;
yt:=(clientheight+round((clientheight shr 1)*sin(alfarad))) shr 1;
Form1.Canvas.LineTo(xt,yt);
Form1.Canvas.Pen.Width:=1;
Form1.Canvas.Pen.color:=clgreen;
Form1.Canvas.MoveTo(clientwidth shr 1, clientheight shr 1);
alfarad:=(round(czas*24*3600) mod 60 - 15)*pi/30;
xt:=(clientwidth+round((clientwidth-25)*cos(alfarad))) shr 1;
yt:=(clientheight+round((clientheight-25)*sin(alfarad))) shr 1;
Form1.Canvas.LineTo(xt,yt);
Form1.Canvas.Pen.Width:=2;
Form1.Canvas.Pen.color:=clblue;
Form1.Canvas.MoveTo(clientwidth shr 1, clientheight shr 1);
alfarad:=(round(czas*24*3600) mod 3600 - 900)*pi/1800;
xt:=(clientwidth+round((clientwidth-35)*cos(alfarad))) shr 1;
yt:=(clientheight+round((clientheight-35)*sin(alfarad))) shr 1;
Form1.Canvas.LineTo(xt,yt);
stary:=czas;
end;
procedure TForm1.FormPaint(Sender: TObject);
var
alfa,xt,yt:integer;
alfarad:real;
begin
if clientheight < 100 then clientheight:=100;
Form1.Canvas.Pen.Color:=clWhite;
form1.Canvas.Rectangle(0,0,form1.clientwidth,form1.clientheight);
Form1.Canvas.Pen.Color:=clred;
for alfa:=1 to 60 do
begin
alfarad:=(alfa*pi/30);
xt:=(clientwidth+round(clientwidth*cos(alfarad))) shr 1;
yt:=(clientheight+round(clientheight*sin(alfarad))) shr 1;
Form1.Canvas.MoveTo(xt,yt);
xt:=(clientwidth+round((clientwidth-20)*cos(alfarad))) shr 1;
yt:=(clientheight+round((clientheight-20)*sin(alfarad))) shr 1;
if alfa mod 5 = 0 then
Form1.Canvas.Pen.Width:=7
else
Form1.Canvas.Pen.Width:=1;
Form1.Canvas.lineTo(xt,yt);
end;
{timer1timer(sender);}
end;
end.