->---在VB中提供了相當強的繪圖功能,可以在窗口或圖形框中利用各種命令繪制各種圖形,靈活使用這些繪圖命令不僅可以完成許多特殊的功能,而且可以為WINDOWS的程序界面增加許多活力,特別是那些巧妙的隨機圖像則更具有特殊的魅力,下面僅以三種隨機動畫為例,演示VB中隨機動畫圖像的風采。
一、隨機簡單圖形動畫
----完成此工作主要的直接使用VB中的作圖命令,比如畫點函數PSet(X,Y),COLOR,其中XY為圖形坐標系統的坐標,COLOR表示顏色值,可用QBColor(x)或RGB(r,g,b)等形式表示,同時可以控制畫點的半徑長度,即通過設置Drawwidth屬性,當半徑大於1時實際上此命令是畫一個實心圓,當然也可以利用Circle命令直接繪制圓形。VB中還提供了隨機數產生手段,即RND內部函數,它可以產生0到1之間的隨機數,利用此函數可以隨機確定畫點的位置、點的顏色、點的半徑等,這樣即可以實現在固定區域內進行隨機畫圓操作,其中隨機位置的確定必須根據作圖區域進行確定,具體可用ScaleWidth及Scaleheight屬性進行確定。為了實現連續動畫效果,可利用時間控件或"DoEvents"命令實現後台處理,具體請見文後的Command1_Click事件中的程序代碼。如果把程序改為隨機畫矩形或空心圓,或者靈活控制畫圓的半徑,則會產生另外的藝術效果,比如在一片黑色的屏幕上畫出隨機的小點,就象夜空中的點點繁星。
二、隨機文字動畫
----在VB中可利用"Print"命令進行字符串的顯示工作,此命令一般只在當前位置顯示字符串,但具體操作時可通過CurrentX和CurrentY控制字符串顯示位置,通過FontSize控制字體的尺寸,通過ForeColor和BackColor控制字符的前景色和背景色,如果把上述的各項屬性值均采用RND進行隨機產生,即會形成隨機字符顯示效果,比如在一個圖形框中顯示一些新年賀辭,同時播放美妙的音樂,那將是一份極好的新年禮物。需要注意一點,由於字體互相覆蓋,長時間顯示會使窗口顯得亂一些,所以最好按一定時間用"CLS"命令進行窗口清除。此處說明一下顏色的控制技巧,如果使用QBColor(Rnd*15)方式定義隨機顏色,只能在16種顏色中隨機產生,而采用RGB(Rnd*256,Rnd*256,Rnd*256)方式則可以產生256*256*256種不同的顏色,但具體的顏色特性受當前WINDOWS屏幕模式的限制。具體操作方式請見文後Command2_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)
----如果把屏幕的底色置為暗黃色,在此窗口內的隨機位置畫出大小不一的三角錐,就象在黃色的沙漠上建起了無數的金字塔,具有一種特殊的情趣。具體操作方法請見文後程序中的Command3_Click事件中的代碼。
四、隨機顯示圖像
----在VB中不僅提供了完善的做圖方法,而且在繪圖方法中還可以靈活的處理圖像文件,其中提供了一個方便的圖像復制命令即:PaintPicture,此命令的功能與API函數BitBlt類似,但由於不用做API函數說明,所以更有它的方便之處,語法格式:
PaintPicturePic,destX,destY,
destWidth,destHeight,
scrX,scrY,scrWidth,scrHeight
其中Pic:為圖片對象,如圖形框Picture等;
destX,destY:目標圖像位置;
destWidth,destHeight:目標圖像尺寸;
scrX,scrY:原圖像的裁剪坐標;
scrWidth,scrHeight:原圖像的裁剪尺寸;
----從以上可以看出,目標圖像的位置可以隨機改變,不僅如此,通過改變destWidth與destHeight值,還可以改變復制後的圖像的尺寸,實現放大或縮小圖像顯示,甚至可以置這兩個屬性為負值,這樣可使目標圖像在水平方向翻轉,實現特殊效果的圖像顯示,靈活運用RND隨機函數確定上述各個參數,可取得理想的隨機圖像顯示效果。具體操作方法請見文後程序Command4_Click事件中的代碼。
----文後是一個完成上述隨機動畫的完整演示程序,需要在From1窗體中安放兩個圖形框Picture(1-2)及四個命令按鈕Command1-5,然後把下面的代碼填入相應的事件處,運行此程序之後,按下按鈕1則在圖形框中進行隨機畫圓演示,按下按鈕2則在圖形框中進行隨機文字顯示,按下按鈕3則在圖形框中隨機顯示三角錐體,按下按鈕4則進行隨機圖像顯示,按下按鈕5則退出程序。此程序在WINDOWS95系統下VB4.0環境下調試通過。
注釋:程序准備
PrivateSubForm_Load()
Command1.Caption="隨機畫圓"
Command2.Caption="隨機文字"
Command3.Caption="立體圖形"
Command4.Caption="隨機圖像"
Command5.Caption="退出"
Form1.ScaleMode=1
Picture1.ScaleMode=1
Picture2.Picture=LoadPicture
("d:windows256color.bmp")
EndSub
注釋:隨機畫圓動畫
PrivateSubCommand1_Click()
DimXPos,YPos
Picture1.Cls
Do
nn=Int(100*Rnd)
Ifnn>0Then
Picture1.DrawWidth=nn
EndIf
XPos=Rnd*Picture1.ScaleWidth
YPos=Rnd*Picture1.ScaleHeight
Picture1.PSet(XPos,YPos),RGB
(Rnd*256,Rnd*256,Rnd*256)
DoEvents
Loop
EndSub
注釋:隨機文字動畫
PrivateSubCommand2_Click()
Picture1.Cls
Do
nn=Int(45*Rnd)
Ifnn>0Then
Picture1.FontSize=nn
EndIf
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
Ifn>50Then
n=0
Picture1.BackColor=QBColor(Rnd*15)
EndIf
DoEvents
Loop
EndSub
注釋:立體隨機動畫
PrivateSubCommand3_Click()
Dimm,n
Picture1.DrawWidth=1
Picture1.BackColor=RGB(210,150,0)
Picture1.Cls
Do
m=Rnd*Picture1.ScaleWidth
n=Rnd*Picture1.ScaleHeight-500
Fori=0ToRnd*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)
Nexti
DoEvents
Loop
EndSub
注釋:隨機圖像顯示
PrivateSubCommand4_Click()
Do
xx=Rnd*Picture1.Width
yy=Rnd*Picture1.Height
Picture1.PaintPicturePicture2.
Picture,xx,yy,
Picture2.Width,Picture2.Height
DoEvents
Loop
EndSub
注釋:退出按鈕
PrivateSubCommand5_Click()
End
EndSub->->