摘 要:本文從VFP語言的事件出發,介紹了如何在VFP中實現文字動畫效果的具體實現方法。
關鍵詞:屬性 事件 代碼
在VFP應用軟件的項目中,有一個主文件,它是整個應用程序的運行起始點。主文件的界面效果的好壞直接影響到人們對該軟件的印象。如何能夠在VFP應用軟件中,實現文字動畫效果、背景隨機變化、動畫的切入等,都將直接影響到界面的效果。這里僅就實現文字動畫效果的具體實現方法做一下簡單介紹。
首先建立一個新的表單(Form1),設置表單的Backcolor屬性,如:RGB(192,192,192),然后在表單上建立四個標簽(Label1、Label2、Label3和Label4)和一個定時器(Timer1)。設置四個標簽的Caption(標題)屬性分別為“文”、“字”、“動”、“畫”,Backstyle屬性為0(透明),Fontsize屬性為26,Autosize屬性為T(自動調整大小);設置定時器的Interval(定時間隔)為100,Enabled屬性為T(不可用)。
1.文字逐個底部飛入
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
2.文字逐個上部飛入
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
3.文字逐個左側切入
Label1、Label2、Label3和Label4的Alignment屬性為1(右邊),Autosize屬性為.F.。
Form1的Activate過程:
Public Width,Num
Num=1
Width=Thisform.Label1.Width
For I=1 To4
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
4.字符逐個階梯狀向右下展開
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
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 個文字的情況編制的,若需顯示多個文字可根據相應字數進行修改或將其改為一個通用程序來使用。建議作法是將它們保存為“類”,并加以修改制作成一個通用類,如此便可在其它的程序中直接對其進行調用,一勞永逸。