林颖
在DELPHI中的所有对象中都有提供了TOP、LEFT、HEIGHT、WIDTH四个属性,用以控制对象的位置和大小;另外在DELPHI中还提供了一个TIME的构件,利用他们可以方便地实现一些动画。
---- 一. 拉幕
---- 拉幕式即从中间往两边慢慢显示画面。在此把Dbimage1的CENTER属性设成true;把stretch属性设成false。把WIDTH属性设成0,适当设置LEFT的值,使其显示在屏幕中间。实现动画主要方法是修改LEFT属性(值逐渐变小)和WIDTH属性(值逐渐变大),要注意的是为了让幕布从中间均匀地向两边拉开,WIDTH的改变值必须是LEFT改变值的两倍。在DIMEER1的ontime事件中输入如下语句:
if (dbimage1.left >0) then
begin
dbimage1.left:=dbimage1.left-1;
dbimage1.width:=DBImage1.width+2;
//dbimage1.width的改变值必须是dbimage1.left改变值的2倍
end
else
timer1.enabled:=false;//拉幕结束。
---- 把上面
程序中的LEFT改为TOP,WIDTH改为HEIGHT就可以实现竖直方向的拉幕。如果把拉幕这种效果运用于文本类型的对象,就可以实现一行一行地显示文本的效果。
---- 二. 手风琴
---- 在拉幕式的动画中,当画面整个显示后,再把画面从两边往中间慢慢遮住,如此不断循环,象拉手风琴一样。实现时,需加入一个变量STATE,用以表明此时的状态。具体
程序如下:
procedure TForm1.Timer1Timer(Sender: TObject);
begin
if state=1 then
if (dbimage1.left >0) then
begin
dbimage1.left:=dbimage1.left-1;
dbimage1.width:=DBImage1.width+2;
end
else
//当幕完全拉开后,改变状态变量
state:=2
else
//从两边往中间拉
if dbimage1.left< form1.width div 2 then
begin
dbimage1.left:=dbimage1.left+1;
dbimage1.width:=dbimage1.width-2;
end
else
//当幕合上后,改变状态变量
state:=1;
end;
---- 三. 栅栏式
---- 画面初始被竖直栅栏遮住,然后各条栅栏逐渐变窄,被栅栏分割的画面逐渐完整起