姚茂群
[摘要]闡明Visual Basic可視化編程方法進行圖形程序設計的通用方法,以具體實例說明了Visual Basic圖形處理過程中坐標設置、像素點、圖形、顏色值的定義、讀取、處理及各種圖形藝術化處理的技術和方法,并給出處理圖形的應用程序。
[關鍵詞]VB 圖形方法 像素 過程代碼
中圖分類號:TP3文獻標識碼:A文章編號:1671-7597(2009)0220069-01
一、引言
Visual Basic作為功能強大的Windows程序開發(fā)工具軟件,由于它具有先進的設計思想、快速易掌握的使用方法及圖形處理技術手段靈活多樣等特點,受到了軟件開發(fā)人員的關注和青睞,因此成為圖形處理應用程序開發(fā)的理想工具。VB提供了與圖形有關的控件,如圖形框PictureBox、圖像框Image、直線Line與形狀Shape,還提供了完善的做圖方法,可以在窗體或圖形框中繪制各種圖形,如Line方法、Circle方法、Paintpicture方法等。
二、圖形方法
圖形方法是一種在程序運行過程中繪制圖形的手段,它可以經(jīng)過計算,精確地設計圖形的位置與外形,并可以按照不同的算法,生成各種復雜的圖形。下面列舉VB中簡單圖形方法及圖形處理所需程序代碼。
(一)直線和矩形的繪制——Line方法
Line方法具有在object指定對象上畫直線和矩形兩種功能。
命令格式:object. Line [STEP][(X1,Y1)]-[STEP](X2,Y2).[顏色],[B][F]
其中:objet可以是窗體或圖形框;(X1,Y1),(X2,Y2)分別表示線條的起點和終點坐標。顏色表示畫線時用的RGB顏色;B表示畫直線還是畫矩形,F(xiàn)規(guī)定矩形以及邊框的顏色填充
(二)圖象處理——PaintPicture方法
PaintPicture方法可以將圖像框、圖形框或窗體中的一個矩形區(qū)域的像素,復制到圖像框、窗體對象中,并且源像素與目標像素可以有多種組合方式,形成各種有趣的顯示效果, 使用它可以完成很多圖像的特殊處理工作。
命令格式:object PaintPicture Pic,dx,dy,dw,dh,sx,sy,sw,sh,[,
操作碼]
其中Pic:為圖片對象,如圖形框、圖像框或窗體等;dx,dy:目標圖像左上角坐標位置;
dw,dh:目標圖像的寬和高尺寸;sx,sy:原圖像的左上角坐標;sw,sh:原圖像的寬和高尺寸;
操作碼指定源像素與目標像素的組合方式,共有256種不同的方式。
從以上格式可以看出,此命令可以通過改變參數(shù)dw與dh值,改變復制后的圖像的尺寸,實現(xiàn)放大或縮小圖像顯示,甚至可以置這兩個屬性為負值,這樣可使目標圖像在水平方向、垂直方向翻轉,實現(xiàn)特殊效果的圖像顯示。
三、圖形方法的使用拓展
(一)Line方法拓展——繪制一個圓的追逐線
基本思想是:假定平面上兩點M1(X1,Y1)和M2(X2,Y2)。M2沿著某條曲線移動,當M2移動后畫出M1到M2的直線,然后M1沿著這根直線移動直線長度的一個百分比。新坐標位置由:X1=X1+N*(X2-X1),Y1=Y1+N*(Y2-Y1)得到。如此進行下去得到的圖形便是追逐線圖形。
窗體事件過程代碼:
Private Sub Form_Click()
const PI=3.14159
dim x1,y1,x2,y2,M,N,I as single
scale(-1,1)-(1,-1)
M=1:x1=-1:y1=1:N=0.05
for I=0 to 2*pI step 0.05
x2=M*cos(I):y2=M*sin(I)
line(x1,y1)-(x2,y2):x1=x1+N*(x2-x1):y1=y1+N*(y2-y1)
next i
end sub
(二)PaintPicture方法拓展——圖形像素逆轉、圖像平鋪、水平翻轉顯示
首先在From1窗體中創(chuàng)建圖形框Picture1及圖像框image1,命令按鈕,并在各個命令按鈕的Click()事件中編寫過程代碼,運行程序后通過不同按鈕顯示不同的圖像處理效果,按“結束”按鈕則結束程序運行。各個命令按鈕的Click()事件過程代碼如下:
1.圖形像素逆轉顯示:
Private Sub Command1_Click()
Dim dx!, DY!, DW!, DH!, SX!, SY!, SW!, SH!
SX = 0: SY = 0 : SW = Image1.Width: SH = Image1.Height
dx = 0: DY = 0:DW = Image1.Width: DH = Image1.Height
Picture1.PaintPicture Image1.Picture, dx, DY, DW, DH, SX, SY, SW, SH, vbnotSrcCopy
End Sub
2.圖形復制平鋪顯示:
Private Sub Command2_Click()
Dim m, n As Integer
r=Int(Picture1.Width / Image1.Width): c= Int(Picture1.Height / Image1.Height)
For m = 0 To r + 2
For n = 0 To c + 2
Picture1.PaintPicture Image1.Picture, n * Image1.Width, m * Image1.Height, Image1.Width, Image1.Height
Next
Next
End Sub
3.圖形水平翻轉顯示:
Private Sub Command3_Click()
Dim dx!, DY!, DW!, DH!, SX!, SY!, SW!, SH!
SX = Image1.Width: SW = -Image1.WidtH : SH = Image1.Height
dx = 0: DY = 0 : DW = Image1.Width:DH = Image1.Height
Picture1.PaintPicture Image1.Picture, dx, DY, DW, DH, SX, SY, SW, SH, vbSrcCopy
End Sub
結束按鈕
Private Sub Command5_Click()
End
End Sub
參考文獻:
[1]朱新華,Visual Basic程序設計教程,廣西師范大學出版社.
[2]張云苑,VB圖形處理技術,天津職業(yè)技術師范學院學報.
[3]潘小轟,中文Visual Basic 程序設計基礎教程,冶金工業(yè)出版社.