用VB6設計有趣的動畫場景
發(fā)表時間:2023-08-17 來源:明輝站整理相關軟件相關文章人氣:
[摘要]經?措娨暤呐笥岩欢〞⒁獾皆S多動畫片的場面制作得非常精美,那么能不能用VB6設計類似的場面呢,答案是肯定的,下面的代碼可以慢慢的畫出隨機形狀、可以設定樹枝密度的“樹”,并且可以在這棵樹上慢慢的“結...
經?措娨暤呐笥岩欢〞⒁獾皆S多動畫片的場面制作得非常精美,那么能不能用VB6設計類似的場面呢,答案是肯定的,下面的代碼可以慢慢的畫出隨機形狀、可以設定樹枝密度的“樹”,并且可以在這棵樹上慢慢的“結”出指定數量的紅色的“果子”——非常的有趣。
。ㄒ唬┚幊淘
我們可以用適當寬度的line控件分別在窗體上畫出“樹干和樹枝”,然后用shape控件畫出圓圓的大小適當的“果子”,并放在“樹枝”的末梢。這兩個控件的顏色和大小都可以自由設置。在下面的代碼中,也將展示VB6的“無中生有”動態(tài)創(chuàng)建控件數組的新技術。
。ǘ┚幊虒嵺`
啟動VB6,建立一個標準exe工程,添加兩個命令按鈕COMMAND1(CAPTION=“畫出一棵樹”),COMMAND2(CAPTION=“顯示果子”),一個標簽控件(CAPTION=“樹枝密度:”),和一個文本控件TEXT1(用來設置樹枝數量),調整上述控件到適當位置,雙擊窗體,寫入以下代碼:
Option Explicit
Dim CreateLines As Integer
Dim Lines As Integer
Dim mLine() As Line '樹枝
Dim Fruit() As Shape '果子
Dim CreateFruit As Integer
Dim Apple As Integer
Dim Evaluate As Boolean '是否已經畫出了數
Dim Clear As Integer
Dim Eraser As Integer
Dim ShoWApple As Boolean '是否已經顯示了果子
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long) '定時器
Private Sub Command1_Click() '畫出樹枝
If Evaluate=True Then '如果已經畫出了樹枝
For Clear=2 To UBound(mLine)
Set mLine(Clear)=Nothing
Set Fruit(Clear)=Nothing
Next
Controls.Remove("MotherLine")
For Eraser=2 To UBound(mLine)
Controls.Remove("linea" & Eraser)
Controls.Remove("fruta" & Eraser)
Next
End If '那么將它們清理
'否則直接按照TEXT1中設置的數量畫出樹枝
'樹枝數量
Lines=Text1.Text
ReDim mLine(1 To Lines) '定義樹枝數組
Set mLine(1)=Controls.Add("vb.line","MotherLine")
'初始化樹干
With mLine(1)
.X1=Form1.ScaleWidth/2
.X2=Form1.ScaleWidth/2 '據窗體中間
.Y1=Form1.ScaleHeight
.Y2=Form1.ScaleHeight-1000 '高度比窗體小1000單位
.Visible=True '可見
.BorderWidth=8 '樹干寬度8
.BorderColor=vbBlack '以黑色填充
End With
'開始畫出樹枝
For CreateLines=2 To Lines
Set mLine(CreateLines)=Controls.Add("Vb.line","Linea"&CreateLines)
If CreateLines Mod 2=0 Then
'向左上方畫出隨機的直線(樹枝)
With mLine(CreateLines)
.X1=mLine(CreateLines/2).X2
.X2=(mLine(CreateLines/2).X2)-Int(Rnd*1000)
.Y1=mLine(CreateLines/2).Y2
.Y2=mLine(CreateLines/2).Y2)-Int(Rnd*1000)
.Visible=True
.BorderColor=vbGreen '以綠色填充
.BorderWidth=3 '寬度為3
End With
Else
With mLine(CreateLines)
'向右上方畫出隨機的直線
.X1=mLine((CreateLines-1)/2).X2
.X2=(mLine((CreateLines-1)/2).X2)+Int(Rnd*1000)
.Y1=mLine((CreateLines-1)/2).Y2
.Y2=(mLine((CreateLines-1)/2).Y2)-Int(Rnd*1000)
.Visible=True
End With
End If
DoEvents
Sleep(50) '每隔0.05秒畫出并且顯示一個樹干
Next
ReDim Fruit(2 To Lines)
'畫出每個樹枝結出的果子,但是并不馬上顯示,直到單擊了“結出果子”按鈕
For CreateFruit=2 To Lines
Set Fruit(CreateFruit)=Controls.Add("vb.shape","fruta"&CreateFruit)
With Fruit(CreateFruit)
.Width=200
.Height=200 '結出果子的大小
.Left=mLine(CreateFruit).X2-100
.Top=mLine(CreateFruit).Y2-100 '結果位置
.FillColor=RGB(255,0,0) '以紅色填充
.FillStyle=0 '邊框類型
.Shape=3 '圓形的的果子
.ZOrder 0
End With
Next
Evaluate=True '設置樹枝已經畫出標志
ShoWApple=False '設置顯示果子標志
Command2.Caption="顯示果子" '設置結果按鈕標題
End Sub
Private Sub Command2_Click() '結出果子按鈕按下
On Error GoTo Erro
If ShoWApple=False Then
'如果果子沒有顯示,那么將它們全部顯示出來
For Apple=LBound(Fruit) To UBound(Fruit)
Fruit(Apple).Visible=True
DoEvents
Sleep (50) '每隔0.05秒顯示一個果子
Next
ShoWApple=True '重新設置顯示果子標志
Command2.Caption="取消果子"
Else
'如果果子已經顯示,那么將它們全部隱藏
For Apple=LBound(Fruit) To UBound(Fruit)
Fruit(Apple).Visible=False
Next
ShoWApple=False 重新設置顯示果子標志
Command2.Caption="顯示果子"
End If
Erro:
If Err.Number=9 Then
MsgBox "必須首先畫出數,才能結出果子!"
End If
End Sub
Private Sub Form_Load()
Me.Caption=App.Title '添加應用程序標題
Me.Left=(Screen.Width-Me.Width)/2
Me.Top=(Screen.Height-Me.Height)/2 '窗體具中
Evaluate=False
ShoWApple=False
End Sub
Private Sub Text1_Validate(Cancel As Boolean)
‘驗證樹枝數量是否為0或者1
If Text1.Text="" Or Text1.Text=1 Then
Cancel=True
MsgBox "必須輸入樹枝的數量!而且要大于1",vbOKOnly,"Error"
End If
End Sub
Private Sub Form_Unload(Cancel As Integer)
End
End Sub '代碼結束