VB提供了相當強的文字輸出和繪圖功能, 可以在窗口或圖形框中利用各種命令顯示字體或繪制各種圖形。靈活使用這些命令,不僅可以完成許多特殊的功能, 而且可以為Windows的程序界面增加許多活力。下面用簡單的例子演示VB中隨機動畫的風采。
(一)、隨機文字動畫 在VB中可利用Print命令進行字符串的顯示工作,此命令一般只在當前位置顯示字符串, 但具體操作時可通過CurrentX和CurrentY 控制字符串顯示位置,通過FontSize控制字體的尺寸, 通過ForeColor和BackColor控制字符的前景色和背景色。 如果把上述的各項屬性值均采用RND 進行隨機產生, 即會形成隨機字符顯示效果。比如在一個圖形框中顯示一些新年賀辭, 同時播放美妙的音樂, 那將是一份極好的新年禮物。需要注意一點,由于字體互相覆蓋,長時間顯示會使窗口顯得亂一些,所以最好按一定時間用“CLS"命令進行窗口清除。此處說明一下顏色的控制技巧,如果使用QBColor(Rnd*15)方式定義隨機顏色,只能在16種顏色中隨機產生, 而采用RGB(Rnd*256,Rnd*256,Rnd*256)方式,則可以產生256*256*256種不同的顏色。具體操作方式請見文后Command1-Click事件中的代碼。 (二)、立體圖形隨機動畫 雖然直接利用繪圖語句即可以實現簡單的動畫, 但如果通過這些命令繪制成一定的立體圖形, 并實行隨機動畫操作, 那將更具有特殊的藝術效果。比如下面兩行簡單的命令將畫出一個具有強烈立體感效果的三角錐體,其中(M,N)為錐體的頂端坐標:
Picture1.Line(m,n+2.5*i)-(m+i/2,n+2*i),RGB(180,180,180)
Picture1.Line(m,n+2.5*i)-(m-i/2,n+2*i),RGB(80,80,80)
如果把屏幕的底色置為暗黃色, 在此窗口內的隨機位置畫出大小不一的三角錐, 就像在黃色的沙漠上建起了無數的金字塔, 具有一種特殊的情趣。具體操作方法請見文后程序中的Command2-Click事件中的代碼。
(三)、演示程序編制過程
文后是一個完成上述隨機動畫的完整演示程序,需要在From1 窗體中安放一個圖形框Picture1及三個命令按鈕Command1-3, 然后把下面的代碼填入相應的事件處。運行此程序之后, 按下按鈕1 ,則在圖形框中進行隨機文字顯示。按下按鈕 2,則在圖形框中隨機顯示三角錐體。按下按鈕3,則退出程序。此程序在Windows 95系統上VB5.0 環境下調試通過。
′程序準備: Private Sub Form-Load() Command1.Caption = ″隨機文字″ Command2.Caption = ″立體圖形″ Command3.Caption = ″退出″ Form1.ScaleMode = 1 Picture1.ScaleMode = 1 End Sub ′隨機文字動畫 Private Sub Command1-Click() Picture1.Cls Do nn = Int(45 * Rnd) If nn > 0 Then Picture1.FontSize = nn End If Picture1.CurrentX = Rnd * Picture1.ScaleWidth - 1000 Picture1.CurrentY = Rnd * Picture1.ScaleHeight Picture1.ForeColor = RGB(Rnd * 256, Rnd * 256, Rnd * 256) Picture1.Print ″隨機 OK!″ n = n + 1 If n > 50 Then n = 0 Picture1.BackColor = QBColor(Rnd * 15) End If DoEvents Loop End Sub ′立體隨機動畫 Private Sub Command2-Click() Dim m, n Picture1.DrawWidth = 1 Picture1.BackColor = RGB(210, 150, 0) Picture1.Cls Do m = Rnd * Picture1.ScaleWidth n = Rnd * Picture1.ScaleHeight - 500 For i = 0 To Rnd * 800 Picture1.Line (m, n + 2.5 * i)-(m + i / 2, n + 2 * i), RGB(180, 180, 180) Picture1.Line (m, n + 2.5 * i)-(m - i / 2, n + 2 * i), RGB(80, 80, 80) Next i DoEvents Loop End Sub ′結束程序 Private Sub Command3-Click() End End Sub
|