<form id="hz9zz"></form>
  • <form id="hz9zz"></form>

      <nobr id="hz9zz"></nobr>

      <form id="hz9zz"></form>

    1. 明輝手游網中心:是一個免費提供流行視頻軟件教程、在線學習分享的學習平臺!

      用VB6設計有趣的動畫場景

      [摘要]經?措娨暤呐笥岩欢〞⒁獾皆S多動畫片的場面制作得非常精美,那么能不能用VB6設計類似的場面呢,答案是肯定的,下面的代碼可以慢慢的畫出隨機形狀、可以設定樹枝密度的“樹”,并且可以在這棵樹上慢慢的“結...
      經?措娨暤呐笥岩欢〞⒁獾皆S多動畫片的場面制作得非常精美,那么能不能用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 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 '代碼結束 


      日韩精品一区二区三区高清