L
liwenbin
Unregistered / Unconfirmed
GUEST, unregistred user!
用CANVAS实现动画显示
下面的位图表示一只羊旋转的动作,该动作由8个占40×40点阵的状态组成,下面的定时器时间的代码就是要让小羊动起来。
代码中imgdest和imgsource为两个Image 控件的名字。在imgdest中装入了上面提到的位图作为源,其Visible属性为false;imgdest则作为目的位图进行动画显示,高度和宽度均设为40。计时器的时间间隔设为100毫秒。
procedure TForm1.Timer1Timer(Sender: TObject);
begin
imgdest.canvas.copyrect(rect(0,0,40,40),
imgsource.canvas,rect(tag*40,0,tag*40+40,40));
if tag=7 then {动作状态编号从零开始,一共有8个状态}
tag:=0
else
tag:=tag+1; {用表单的tag属性表示动作状态,初始值为0}
imgdest.refresh; {刷新图像}
end;
其中 tag 怎么来的,具体的可不可以用
var i:integer 中的i 代替,为什么用tag
下面的位图表示一只羊旋转的动作,该动作由8个占40×40点阵的状态组成,下面的定时器时间的代码就是要让小羊动起来。
代码中imgdest和imgsource为两个Image 控件的名字。在imgdest中装入了上面提到的位图作为源,其Visible属性为false;imgdest则作为目的位图进行动画显示,高度和宽度均设为40。计时器的时间间隔设为100毫秒。
procedure TForm1.Timer1Timer(Sender: TObject);
begin
imgdest.canvas.copyrect(rect(0,0,40,40),
imgsource.canvas,rect(tag*40,0,tag*40+40,40));
if tag=7 then {动作状态编号从零开始,一共有8个状态}
tag:=0
else
tag:=tag+1; {用表单的tag属性表示动作状态,初始值为0}
imgdest.refresh; {刷新图像}
end;
其中 tag 怎么来的,具体的可不可以用
var i:integer 中的i 代替,为什么用tag