【发布时间】:2013-03-24 01:52:46
【问题描述】:
我试图通过使用 GDI+ 来完成一项简单的任务,但我找不到任何示例。 在我的代码中,我需要更改图像位置(如果更具体,则为顶部),但我不知道是否可以以更好的方式做到这一点。 这就是我现在的做法:
procedure TForm2.Timer1Timer(Sender: TObject);
var
I: Integer;
begin
if image1.Top = -93 then
Begin
for I := -93 to -1 do
Begin
Sleep(10);
image1.Top := Image1.Top + 1;
Application.ProcessMessages;
End;
End else if image1.Top = 0 then
Begin
for I := 0 downto -92 do
Begin
Sleep(10);
image1.Top := Image1.Top - 1;
Application.ProcessMessages;
End;
End;
end;
嗯,这很简单,但它并不顺利,而是在每一步都会跳跃和重绘。
感谢您的帮助。
更新: 感谢 TLama 和他的启发,我找到了 this GDIPlus 为 delphi 2007 实现
【问题讨论】:
-
你可能想看看双缓冲动画。
-
@Warren,移动控件是一种错误的动画方式!您应该记住要绘制的位置,在
OnTimer事件中修改它并告诉系统您要使控件无效。 -
当然可以。然而,双缓冲动画技术加上在画布上绘图,效果很好。