Database 版 (精华区)
发信人: starstar (星语心愿), 信区: Database
标 题: Visual FoxPro 5.0实现文字动画效果五例
发信站: 哈工大紫丁香 (2001年05月19日20:34:50 星期六), 站内信件
作为一种多媒体幻灯片制作软件,Microsoft PowerPoint 提供了几十种文字动画
效果,这些效果都是我们在使用Visual FoxPro编制多媒体程序时所梦寐以求的,
但是我们却无法在Visual FoxPro中直接使用它们。既然无法直接使用,何不进行
模拟制作呢?笔者对Microsoft PowerPoint的文字动画进行分析,发现大多数的效
果都可使用Visual FoxPro进行仿制。以下笔者精选了五种效果(笔者认为效果较
好且用途广泛的),所起名称均与Microsoft PowerPoint中名称相仿,有兴趣的读
者不妨一试,比较一下两者的效果。
每种效果制作之前都需要建立好相应控件。首先建立一个新的表单(Form1)
,设置表单的Backcolor属性为RGB(192,192,192),然后在表单上建立四个标
签(Label1、Label2、Label3和Label4)和一个定时器(Timer1)。设置四个标签
的Caption(标题)属性分别为‘文’、‘字’、‘动’、‘画’,Backstyle属性
为0(透明),Fontsize属性为26,Autosize属性为.T.(自动调整大小);设置定
时器的Interval(定时间隔)为100,Enabled属性为.T.(不可用)。
文字逐个底部飞入
Label1、Label2、Label3和Label4的Autosize属性为.T.,Alignment属性为0(左
边)。
Form1的Activate过程:
Public Top,Num
Num = 1
Top = Thisform.Label1.Top
For I = 1 To 4
LabelT = 'Label' + STR(i,1) + '.Top'
Thisform.&LabelT = Thisform.Height
Endfor
Thisform.Timer1.Enabled = .T.
Timer1的Timer过程:
LabelT = 'Label' + STR(Num,1) + '.Top'
If Thisform.&LabelT <= Top + 20
Thisform.&LabelT = Top
Num = Num + 1
If Num = 5
Thisform.Timer1.Enabled = .F.
Endif
Return
Endif
Thisform.&LabelT = Thisform.&LabelT – 20
文字逐个上部飞入
Label1、Label2、Label3和Label4的Autosize属性为.T.,Alignment属性为0(左
边)。
Form1的Activate过程:
Public Top,Num
Num = 1
Top = Thisform.Label1.Top
For I = 1 To 4
LabelT = 'Label' + STR(i,1) + '.Top'
Thisform.&LabelT = - 30
Endfor
Thisform.Timer1.Enabled = .T.
Timer1的Timer过程:
LabelT = 'Label' + STR(Num,1) + '.Top'
If Thisform.&LabelT <= Top - 20
Thisform.&LabelT = Top
Num = Num + 1
If Num = 5
Thisform.Timer1.Enabled = .F.
Endif
Return
Endif
Thisform.&LabelT = Thisform.&LabelT + 20
文字逐个左侧切入
Label1、Label2、Label3和Label4的Alignment属性为1(右边),Autosize属性为
.F.。
Form1的Activate过程:
Public Width,Num
Num = 1
Width = Thisform.Label1.Width
For I = 1 To 4
LabelW = 'Label' + STR(I,1) + '.Width'
Thisform.&LabelW = 0
Endfor
Thisform.Timer1.Enabled = .t.
Timer1的Timer过程:
LabelW = 'Label' + STR(Num,1) + '.Width'
If Thisform.&LabelW >= Width - 5
Thisform.&LabelW = Width
Num = Num +1
If Num = 5
Thisform.Timer1.Enabled = .F.
Endif
Return
Endif
Thisform.&LabelW = Thisform.&LabelW + 5
字符逐个阶梯状向右下展开
Label1、Label2、Label3和Label4的Autosize属性为.F.,Alignment属性为0(左
边)。
Form1的Activate过程:
Public Height,Width,Num
Num = 1
Height = Thisform.Label1.Height
Width = Thisform.Label1.Width
For I = 1 To 4
LabelH = 'Label' + STR(i,1) + '.Height'
LabelW = 'Label' + STR(i,1) + '.Width'
Thisform.&LabelH = 0
Thisform.&LabelW = 0
Endfor
Thisform.Timer1.Enabled = .T.
Timer1的Timer过程:
LabelH = 'Label' + STR(Num,1) + '.Height'
LabelW = 'Label' + STR(Num,1) + '.Width'
If Thisform.&LabelH>=Height–5 OR Thisform.&LabelW>=Width-5
Num = Num + 1
If Num = 5
Thisform.Timer1.Enabled = .F.
Endif
Return
Endif
Thisform.&LabelH = Thisform.&LabelH + 5
Thisform.&LabelW = Thisform.&LabelW + 5
字符逐个阶梯状向左上收缩
Label1、Label2、Label3和Label4的Autosize属性为.F.,Alignment属性为0(左
边)。
Form1的Activate过程:
Public Height,Width,Num
Num = 4
Height = Thisform.Label1.Height
Width = Thisform.Label1.Width
Thisform.Timer1.Enabled = .T.
Timer1的Timer过程:
LabelH = 'Label' + STR(i,1) + '.Height'
LabelW = 'Label' + STR(i,1) + '.Width'
If Thisform.&LabelH <= 5 or Thisform.&LabelW <= 5
Thisform.&LabelH = 0
Thisform.&LabelW = 0
Num = Num - 1
If Num = 0
Thisform.Timer1.Enabled = .F.
Endif
Return
Endif
Thisform.&LabelH = Thisform.&LabelH - 5
Thisform.&LabelW = Thisform.&LabelW – 5
以上的六例均是针对有4 个文字的情况编制的,若需显示多个文字可根据相应字数
进行修改或将其改为一个通用程序来使用。笔者的建议作法是将它们保存为‘类’
,并加以修改制作成一个通用类,如此便可在其它的程序中直接对其进行调用,一
劳永逸。
以上程序均在Visual FoxPro 5.0和Windows 95中运行通过。
--
※ 来源:·哈工大紫丁香 bbs.hit.edu.cn·[FROM: 202.118.239.32]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:5.802毫秒