📄 visual foxpro 8.txt
字号:
Visual FoxPro 5.0实现文字动画效果五例
作为一种多媒体幻灯片制作软件,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中运行通过。
返回
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -