用VB6設計有趣的動畫場景 (轉)
用設計有趣的動畫場景
經常看電視的朋友一定會注意到許多動畫片的場面製作得非常精美,那麼能不能用VB6設計類似的場面呢,答案是肯定的,下面的程式碼可以慢慢的畫出隨機形狀、可以設定樹枝密度的“樹”,並且可以在這棵樹上慢慢的“結”出指定數量的紅色的“果子”——非常的有趣。
(一)原理
我們可以用適當寬度的line分別在窗體上畫出“樹幹和樹枝”,然後用shape控制元件畫出圓圓的大小適當的“果子”,並放在“樹枝”的末梢。這兩個控制元件的顏色和大小都可以自由設定。在下面的程式碼中,也將展示VB6的“無中生有”動態建立控制元件陣列的新技術。
(二)程式設計實踐
啟動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 Shople 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 '程式碼結束
(三)執行
首先單擊“畫出一棵樹”按鈕,這時將會慢慢的在窗體中央生成一棵“樹”,黑色的樹幹,綠色的樹枝。點選“顯示果子”按鈕,就會在這棵樹上生成250個紅色的圓形“果子”。是不是非常有趣?!
本文示例的程式碼比較簡單,程式設計愛好者完全可以將line替換成精美的圖片(picture),至於“果子”的外形當然也可以隨心所欲的設計。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10748419/viewspace-1001222/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- UI設計師福利之手把手打造SVG動畫應用的微場景UISVG動畫
- 如何繪製三維動畫設計和製作場景更好動畫
- Linkedlist的應用場景:設計佇列、設計棧佇列
- Android 轉場動畫Android動畫
- 有趣的CSS彈跳動畫CSS動畫
- 有趣的C4D小場景!
- 原畫人場景原畫教程,畫場景的思路是怎麼樣的?
- 索引設計(組合索引適用場景)索引
- 動效設計的功能性-轉場退場
- 效能場景設計
- 設計模式應用場景之Model設計中可以用到的設計模式設計模式
- 場景設計中距離感的設計
- UI | 一組有趣的互動動效設計作品UI
- 圖解設計模式:身份認證場景的應用圖解設計模式
- Android轉場動畫一說Android動畫
- TransitionAnimation自定義轉場動畫NaN動畫
- 動漫街道場景高畫質動態桌布
- 分享一組場景應用設計參考
- MobSDK垂直化場景使用 助力程式設計師設計更美好的應用程式設計師
- [Elasticsearch] ES 的Mapping 設計在實際場景中應用ElasticsearchAPP
- Flutter 在流式場景下的架構設計與應用Flutter架構
- 軟體測試用例設計方法-場景法
- Apache Doris設計思想介紹與應用場景Apache
- 遊戲場景中的光影設計遊戲
- 從中國的山水畫談談遊戲場景設計該有的狀態遊戲
- 使用者畫像分析與場景應用
- 鴻蒙HarmonyOS實戰-ArkUI動畫(頁面轉場動畫)鴻蒙UI動畫
- 鴻蒙HarmonyO實戰-ArkUI動畫(元件內轉場動畫)鴻蒙UI動畫元件
- HarmonyOS 應用中複雜業務場景下的介面設計
- 超酷炫的轉場動畫?CSS 輕鬆拿下!動畫CSS
- Android 中的轉場動畫及相容處理Android動畫
- 高逼格Android轉場動畫,輕鬆實現掘金使用者頭像轉場動畫Android動畫
- 有趣的404頁面設計
- 智慧動畫互動設計:Principle mac免啟用版動畫Mac
- Android Reveal圓形Activity轉場動畫Android動畫
- [譯] React Native 中使用轉場動畫!React Native動畫
- 場景在關卡設計中的比重
- 面向多場景而設計的 Erda Pipeline
- 強大的動畫互動設計:Principle免啟用最新版動畫