繁体   English   中英

Delphi-如何移动控件并刷新它

[英]Delphi - how to move a control and refresh it

在Delphi中进行编程练习时,我想一次在屏幕上滚动一个图像1个像素,并在每次移动时对其进行重新绘制,因此看起来它实际上在移动。 目前,Delphi只是在开始和结束处绘制它,因此它并不流畅。 我尝试了重画,也尝试了刷新,但是都没有用。 我还尝试使其可见和不可见,以查看是否可行,但没有运气。

image1.Visible := true;
for i := 0 to 50 do
begin
   image1.Visible := false;
   image1.Left := image1.Left + 1;
   image1.Repaint(); // this doesn't work...
   for j := 0 to 1000000 do
   begin
      k := i + j; // do nothing code
   end; 
   image1.Visible := true;
end;

有人知道我在想什么吗? 谢谢。

更好的方法是使用计时器。 在Delphi中,这意味着类TTimer的对象。 每次计时器触发时,您只需增加Left属性。 您可能想要一个计数器,该计数器一旦触发了您想要的次数便会禁用计时器。

procedure TForm1.FormClick(Sender: TObject);
var
  i: integer;
begin
  for i := 0 to 50 do
  begin
    image1.Left := image1.Left + 1;
    Application.ProcessMessages;
    sleep(100);
  end;
end;

您也可以执行Image1.Update而不是Application.ProcessMessages但是应用程序将停止响应Windows消息。 因此,它将“冻结”。 无论如何,这是制作动画的非常丑陋的方式(非常丑陋!),但是如果它只是一种练习,那么...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM