top
Loading...
VB中隨機圖像的魅力
p>在VB中提供了相當強的繪圖功能, 可以在窗口或圖形框中利用各種命令繪制各種圖形, 靈活使用這些繪圖命令不僅可以完成許多特殊的功能, 而且可以為WINDOWS 的程序界面增加許多活力, 特別是那些巧妙的隨機圖像則更具有特殊的魅力, 下面僅以三種隨機動畫為例, 演示VB中隨機動畫圖像的風采。

一、隨機簡單圖形動畫

完成此工作主要的直接使用VB中的作圖命令, 比如畫 點函數PSet(X,Y),COLOR, 其中X Y為圖形坐標系統的坐標, 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函數說明,所以更有它的方 便之處, 語法格式:
PaintPicture Pic,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 則退出程序。此程序在WINDOWS 95 系統下VB4.0環境下調試通過。

程序準備Private Sub Form_Load()Command1.Caption = "隨機畫圓"Command2.Caption = "隨機文字"Command3.Caption = "立體圖形"Command4.Caption = "隨機圖像"Command5.Caption = "退出"Form1.ScaleMode = 1Picture1.ScaleMode = 1Picture2.Picture = LoadPicture("d:windows256color.bmp")End Sub隨機畫圓動畫Private Sub Command1_Click()Dim XPos, YPos Picture1.Cls Do nn = Int(100 * Rnd) If nn > 0 Then Picture1.DrawWidth = nn End If XPos = Rnd * Picture1.ScaleWidth YPos = Rnd * Picture1.ScaleHeightPicture1.PSet (XPos, YPos), RGB(Rnd * 256, Rnd * 256, Rnd * 256) DoEvents LoopEnd Sub隨機文字動畫Private Sub Command2_Click() Picture1.Cls Do nn = Int(45 * Rnd) If nn > 0 Then Picture1.FontSize = nn End IfPicture1.CurrentX = Rnd * Picture1.ScaleWidth - 1000Picture1.CurrentY = Rnd * Picture1.ScaleHeightPicture1.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 LoopEnd Sub立體隨機動畫Private Sub Command3_Click()Dim m, nPicture1.DrawWidth = 1Picture1.BackColor = RGB(210, 150, 0)Picture1.ClsDom = Rnd * Picture1.ScaleWidthn = Rnd * Picture1.ScaleHeight - 500For i = 0 To Rnd * 800Picture1.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 iDoEventsLoopEnd Sub隨機圖像顯示Private Sub Command4_Click()Doxx = Rnd * Picture1.Widthyy = Rnd * Picture1.HeightPicture1.PaintPicture Picture2. Picture, xx, yy, Picture2.Width, Picture2.HeightDoEventsLoopEnd Sub退出按鈕Private Sub Command5_Click()EndEnd Sub
作者:http://www.zhujiangroad.com
來源:http://www.zhujiangroad.com
北斗有巢氏 有巢氏北斗