我做了一个表盘,在1秒钟内刷新20次,可是窗体不停的闪动,请各位朋友问如何解决啊。谢谢了。程序如下:procedure TMainForm.FormCreate(Sender: TObject);
var
i,j:integer;
begin
Timer1.Interval := 50;
with Image1 do
begin
Canvas.Pen.Width:=12;
Canvas.Pen.Color:=clMedGray;
Canvas.Ellipse(12,7,378,373);
Canvas.Pen.Width:=5;
Canvas.Pen.Color:=clBlack;
Canvas.Ellipse(20,15,370,365);
for i := 1 to 10 do
begin
Canvas.Pen.Width := 3;
Canvas.MoveTo(195+Trunc(175*(sin(i*PI/5))),190-Trunc(175*(cos(i*PI/5))));
Canvas.LineTo(195+Trunc(162*(sin(i*PI/5))),190-Trunc(162*(cos(i*PI/5))));
Canvas.TextOut(183,340,'1000');
Canvas.TextOut(183,30,'2000'); Canvas.TextOut(95,308,'1200');
Canvas.TextOut(45,230,'1400');
Canvas.TextOut(45,137,'1600');
Canvas.TextOut(95,60,'1800'); Canvas.TextOut(275,60,'200');
Canvas.TextOut(320,137,'400');
Canvas.TextOut(320,230,'600');
Canvas.TextOut(270,308,'800');
for j := 0 to 9 do
begin
if i < 11 then
begin
if j = 5 then
Canvas.Pen.Width := 2
else
Canvas.Pen.Width := 1;
Canvas.MoveTo(195+Trunc(175*(sin((10*(i-1)+j)*PI/50))),190-Trunc(175*(cos((10*(i-1)+j)*PI/50))));
Canvas.LineTo(195+Trunc(167*(sin((10*(i-1)+j)*PI/50))),190-Trunc(167*(cos((10*(i-1)+j)*PI/50))));
end;
end;
end;
end;
end;procedure TMainForm.Timer1Timer(Sender: TObject);
var
i: integer;
begin
Refresh;
Canvas.Pen.Width := 3;
Canvas.LineTo(195+Trunc(175*(sin(Random(2000)*PI/1000))),190-Trunc(175*(cos(Random(2000)*PI/1000))));
end;
var
i,j:integer;
begin
Timer1.Interval := 50;
with Image1 do
begin
Canvas.Pen.Width:=12;
Canvas.Pen.Color:=clMedGray;
Canvas.Ellipse(12,7,378,373);
Canvas.Pen.Width:=5;
Canvas.Pen.Color:=clBlack;
Canvas.Ellipse(20,15,370,365);
for i := 1 to 10 do
begin
Canvas.Pen.Width := 3;
Canvas.MoveTo(195+Trunc(175*(sin(i*PI/5))),190-Trunc(175*(cos(i*PI/5))));
Canvas.LineTo(195+Trunc(162*(sin(i*PI/5))),190-Trunc(162*(cos(i*PI/5))));
Canvas.TextOut(183,340,'1000');
Canvas.TextOut(183,30,'2000'); Canvas.TextOut(95,308,'1200');
Canvas.TextOut(45,230,'1400');
Canvas.TextOut(45,137,'1600');
Canvas.TextOut(95,60,'1800'); Canvas.TextOut(275,60,'200');
Canvas.TextOut(320,137,'400');
Canvas.TextOut(320,230,'600');
Canvas.TextOut(270,308,'800');
for j := 0 to 9 do
begin
if i < 11 then
begin
if j = 5 then
Canvas.Pen.Width := 2
else
Canvas.Pen.Width := 1;
Canvas.MoveTo(195+Trunc(175*(sin((10*(i-1)+j)*PI/50))),190-Trunc(175*(cos((10*(i-1)+j)*PI/50))));
Canvas.LineTo(195+Trunc(167*(sin((10*(i-1)+j)*PI/50))),190-Trunc(167*(cos((10*(i-1)+j)*PI/50))));
end;
end;
end;
end;
end;procedure TMainForm.Timer1Timer(Sender: TObject);
var
i: integer;
begin
Refresh;
Canvas.Pen.Width := 3;
Canvas.LineTo(195+Trunc(175*(sin(Random(2000)*PI/1000))),190-Trunc(175*(cos(Random(2000)*PI/1000))));
end;
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货