圖像處理是Visual Basic編程裡一個非常重要的部分,因為一個有吸引力的界面才能吸引用戶。在舊的BASIC裡,繪畫和設計圖像被認為是困難的工作,因為我們只能在一個文本的環境中進行編程。然而,在Visual Basic 6中,因為我們可在視覺性的環境中進行編程,這些工作已變得容易。VB6中有四個基本控件可以用它來繪制圖形,它們是線條控件(Line Control),形狀控件(Shape Control),圖像框(Image Box)和圖片框(Picture Box)
18.1 線條控件(Line Control)和形狀控件(Shape Control)
要畫一條直線,只要按一下線條控件然后用鼠標在表單畫上線條。畫線后,你可以改變它的顏色,寬度和樣式的BorderColor(邊框顏色),BorderWidth(邊框寬度)和BorderStyle(邊框樣式)等屬性。
同樣,要繪制一個形狀,只需點擊形狀控件然上繪制形狀。默認的形狀是一個矩形,它的形狀屬性設置在0。您可以通過改變形狀屬性的值來改變形狀。方形,橢圓形,圓形,圓角矩形及圓角方形的屬性分別是1,2,3,4和5。此外,你可使用的BackColor屬性來設定它的背景顏色,用BorderStyle屬性來設定邊框樣式,及使用BorderColor 和BorderWidth屬性來設定邊框顏色及邊框寬度。
範例18.1
這個程序允許用戶從列表框中的選項列表中選擇一個特定的形狀來改變形狀,以及通過一個通用對話框來改變它的顏色。
這個程序裡要用到的物件是一個列表框,一個命令按鈕,一個形狀控制和一個通用對話框。通用對話框可以通過點擊菜單上的“工程”項目,單擊“部件”,然后選擇“Microsoft通用對話框控件6.0(Microsoft Common Dialog Control 6.0)來加入到工具箱中,你可以將它拖動到表單中。通過AddItem方法可以把項目添加到列表框中的清單。通用對話框呈現標准顏色的程序如下:
CommonDialog1.Flags = &H1&
CommonDialog1.ShowColor
Shape1.BackColor = CommonDialog1.Color
程式的最后一行让用户在对话框中点击一个特定的颜色来改变背景颜色,如下面的图中所示:
界面
程式碼
Private Sub Form_Load()
List1.AddItem "矩形"
List1.AddItem "正方形"
List1.AddItem "椭圆型"
List1.AddItem "圆形"
List1.AddItem "圆角矩形"
List1.AddItem "圆角方形"
End Sub
Private Sub List1_Click()
Select Case List1.ListIndex
Case 0
Shape1.Shape = 0
Case 1
Shape1.Shape = 1
Case 2
Shape1.Shape = 2
Case 3
Shape1.Shape = 3
Case 4
Shape1.Shape = 4
Case 5
Shape1.Shape = 5
End Select
End Sub
Private Sub Command1_Click()
CommonDialog1.Flags = &H1&
CommonDialog1.ShowColor
Shape1.BackColor = CommonDialog1.Color
End Sub
18.2
圖像框(Image Box)和圖片框(Picture Box)
使用線條和形狀控件繪制圖形,你只能創建一個簡單的設計。為了改善界面的外觀,你需要把自己的的圖像和照片加上去。幸運的是,VB6有兩個很強大的圖形工具,就是圖像框和圖片框。
要加載一個圖片或圖像到圖像框或圖片框裡,您可以點擊圖片上的屬性,在屬性窗口中啟動一個對話框。它會提示你選擇某個圖片文件。您也可以在運行時通過使用LoadPictrure()方法加載圖片。它的語法是
Image1.Picture= LoadPicture("C:\path name\picture file name") or
picture1.Picture= LoadPicture("C:\path name\picture name")
例如,下面的語句将加載grape.gif的圖片插入圖像框。
Image1.Picture= LoadPicture("C:\My Folder\VB program\Images\grape.gif")
範例 18.2
在這個例子中,每次你點擊如圖18.2所示的“change pictures”按鈕,你將能夠看到三幅圖像加載到圖片框裡。這個程序使用Rnd函數來產生隨機整數,然后使用LoadPicture方法使不同的圖片加載到圖片框。輸出如圖18.2所示。
圖18.2
程式碼
Dim a, b, c As Integer
Private Sub Command1_Click ()
Randomize Timer
a = 3 + Int(Rnd * 3)
b = 3 + Int(Rnd * 3)
c = 3 + Int(Rnd * 3)
If a = 3 Then
Image1(0).Picture = LoadPicture("C:\My Folder\VB program\Images\grape.gif")
End If
If a = 4 Then
Image1(0).Picture = LoadPicture("C:\My Folder\VB program\Images\cherry.gif")
End If
If a = 5 Then
Image1(0).Picture = LoadPicture("C:\My Folder\VB program\Images\orange.gif")
End If
If b = 3 Then
Image1(1).Picture = LoadPicture("C:\My Folder\VB program\Images\grape.gif")
End If
If b = 4 Then
Image1(1).Picture = LoadPicture("C:\My Folder\VB program\Images\cherry.gif")
End If
If b = 5 Then
Image1(1).Picture = LoadPicture("C:\My Folder\VB program\Images\orange.gif")
End If
If c = 3 Then
Image1(2).Picture = LoadPicture("C:\My Folder\VB program\Images\grape.gif")
End If
If c = 4 Then
Image1(2).Picture = LoadPicture("C:\My Folder\VB program\Images\cherry.gif")
End If
If c = 5 Then
Image1(2).Picture = LoadPicture("C:\My Folder\VB program\Images\orange.gif")
End If
End Sub
18.3 PSet, Line 及 Circle方法
除使用線條和形狀控件來繪制圖形,你也可以使用用PSet,Line和Circle方法來繪制圖形。
(a) Pset 方法
PSet方法是在屏幕上畫一个点, 它的語法如下,
Pset (x , y ), color
(x , y ) 是點的坐標而 color 是它的顏色。要指定顏色,你可以使用顏色代碼或標准VB顏色常數,如 VbRed, VbBlue, VbGeen 等
例如, Pset(100,200), VbRed 將在(100,200) 坐標顯示一個紅點 .
PSet方法也可以用來繪制一條直線。該過程序是
For x= a to b
Pset(x,x)
Next x
上述程序將繪制一條從(a,a)點至(b,b)點的直線
例如,下面的程序將繪制從(0,0)點至(100,100)點的品紅線。
For x= 0 to 100
Pset(x,x) , vbMagenta
Next x
(b) Line 方法
雖然 PSet 方法可以用來繪制一條直線,但是會有點慢。這如果你想以更快的速度畫出一條直線,最好使用Line方法。Line方法的語法如下所示。它繪制一條從(x1,y1)點至(x2,y2)點的直線,而顏色常數將決定直線的顏色。
Line (x1, y1)-(x2, y2), color
例如,下面的語法將繪制一條從(0,0)点到(1000,2000)點的红色直線。
Line (0, 0)-(1000, 2000), VbRed
Line方法也可用于繪制一个矩形,其语法如:
Line (x1-y1)-(x2, y2), color, B
矩形的四个角的坐標是(x1-y1), (x2-y1), (x1-y2) and (x2, y2)
Line方法的另一个變化是為矩形填一种颜色,其語法如:
Line (x1, y1)-(x2, y2), color, BF
如果你想在PictureBox中繪制圖形时,你可以使用下面的語法
Picture1.Line (x1, y1)-(x2, y2), color
Picture1.Line (x1-y1)-(x2, y2), color, B
Picture1.Line (x1-y1)-(x2, y2), color, BF
Picture1.Circle (x1, y1), radius, color
(c) Circle 方法
Circle 方法的語法如下
Circle (x1, y1), radius, color
它繪制中心在(X1,Y1)的圓圈,这圓圈具有特定的半徑和特定的邊框颜色
例如以下的程序:
Circle (400, 400), 500, VbRed
繪制中心点在(400, 400)的圓圈 ,其半徑為500緹和具有红色的邊框。