如何使形状在特定位置自动移动,按坐标进行坐标

时间:2013-04-17 19:28:35

标签: delphi

我为写这么糟糕的标题而道歉,请你编辑一下,让其他人明白我的意思?我会解释:

我想在特定位置移动一个形状,例如从x:= 1000到x:= 600。 但是,如果我写:

shape1.left:=600;

它会将形状从1000(起始位置)移动到600,但我不希望它跳400mm,但首先转到992,然后是184,然后是176等,以便人们可以看到它实际上是移动。

我尝试使用命令(睡眠),但它没有用,也许它仍然跳400毫米:

Shape1.Left:=1000;
sleep (50);
shape1.Left:=992;
sleep (50);
...
...

由于

1 个答案:

答案 0 :(得分:5)

不要在主线程中使用Sleep。它会阻止你的应用程序GUI线程,这是一个严重的失误。

而是在表单上删除计时器。并编写一个这样的计时器处理程序:

procedure TForm1.Timer1Timer(Sender: TObject);
begin
  Shape1.Left := Shape1.Left - 5;
end;

定时器事件处理程序定期执行。每次定时器勾选时,您都会更新形状的位置。

您可能希望将计时器间隔设置得非常低,以便动画显得平滑。例如,尝试100毫秒。

您可能还想在形状达到目标时禁用计时器。

procedure TForm1.Timer1Timer(Sender: TObject);
begin
  Shape1.Left := Shape1.Left - 5;
  if Shape1.Left<=ShapeTargetLeft then
    Timer1.Enabled := False;
end;