[英]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.