图像设计是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
这个程序允许用户从列表框中的选项列表中选择一个特定的形状,以及通过一个通用对话框来改变它的颜色, 如图18.1所示。
这个程序中要用到的对象是一个列表框,一个命令按钮,一个形状控制和一个通用对话框。通用对话框可以通过点击菜单上的“工程”项目,单击“部件”,然后选择“Microsoft通用对话框控件6.0(Microsoft Common Dialog Control 6.0)来加入到工具箱中,你可以将它拖动到表单中。通过AddItem方法可以把项目添加到列表框中的清单。通用对话框呈现标准颜色的程序如下:
CommonDialog1.Flags = &H1&
CommonDialog1.ShowColor
Shape1.BackColor = CommonDialog1.Color
程序的最后一行让用户在对话框中点击一个特定的颜色来改变背景颜色,如图18.2所示。
图18.1:界面
图18.2
程序代码
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
18.2 图像框(Image Box)和图片框(Picture Box)
如果仅仅使用线条和形状控件来绘制图形,你只能设计一个简单的界面。为了改善界面的外观,你需要把自己的的图像和照片加上去。VB6有两个很好的绘制图形工具,那就是图像框和图片框。
要加载一个图片或图像到图像框或图片框中,您可以点击图片上的属性,在属性窗口中启动一个对话框。它会提示你选择某个图片文件。您也可以在运行时通过使用LoadPictrure()方法加载图片。它的语法是
Image1.Picture= LoadPicture("C:\path name\picture file name")
picture1.Picture= LoadPicture("C:\path name\picture name")
例如,下面的语句将加载grape.gif的图片插入图像框。
Image1.Picture= LoadPicture("C:\My Folder\VB program\Images\grape.gif")
范例 18.2
在这个例子中,当你点击如图18.3所示的“change pictures”按钮,你将能够看到三幅图像加载到图片框中。这个程序使用Rnd函数来产生随机整数,然后使用LoadPicture的方法使不同的图片加载到图片框。输出如图18.3所示。
图18.3
程序代码
Dim a, b, c As Integer
Private Sub Command1_Click ()
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缇和具有红色的边框。