查看文章
 
drawing of vb
2008-09-25 17:12

Visual Basic 为编程人员提供了强大的绘图功能支持,在本章,我们将学会基本的绘图方法。

在 VB 中,主要通过两种办法进行图像绘制:一种是利用 ActiveX 控件,如用图形框显示图片;另外一种是通过使用 VB 语言本身的函数和方法,通过在屏幕上绘制点、线和图形来制作。

一、图形框控件的主要属性:
图形框控件(PictureBox)可以用来显示位图、JPGE、GIF、图标等格式的图片,在工具箱面板中,图形框控件的图标如图一:


图一

1、Name 属性:
命名规则为:PicX ,如 PicMove 、PicShow ,等等。

2、Picture(图片)属性:
本属性用来返回或设置控件中要显示的图片,可以通过属性窗口进行设置。如果要在程序运行过程中载入图片,常常使用 LoadPicture 函数,其语法规则为:

对象.Picture = LoadPicture("图形文件的路径与名字")

如:PicMove.Picture = Loadpicture("c:\Picts\pen.bmp")

3、AutoSize(自动显示)属性:
本属性决定了图形框控件是否自动改变大小以显示图片的全部内容。当值为 True ,图象可以自动改变大小以显示全部内容;当值为 False ,则不具备图象的自我调节功能。

二、图形框控件的主要事件:
它可以接收 Click(单击)事件与 DblClick(双击)事件,还可以在图片框中使用 Cls(清屏)、Print 方法。在实际使用过程中,它多是作为一种图形容器出现,所以常常是跟其他控件搭配使用的,如点击一个按钮,图形框自动装入图片,等等。

三、图像框控件(Image)的主要属性:
跟图形框一样,图像框控件也具有诸如 Name、Picture 等属性,以及 Loadpicture 的方法,但在图像自适应问题上有所不同。

PictureBox 用 AutoSize 属性控制图形的尺寸自动适应,而 Image 控件则用 Stretch 属性对图片进行大小调整。如图二:


图二

四、图像框与图形框控件的区别:
1、图形框是“容器”控件,可以作为父控件,而图像框不能作为父控件,其他控件不能作为图像框的子控件。

图形框作为一个“容器”,可以把其他控件放在其内作为它的“子控件”,当图形发生位移,其内的子控件也会跟着一起移动。


图三

2、图形框可以通过 Print 方法显示与接收文本,而图像框不能。

3、图像框比图形框占用内存少,显示速度更快一些,因此,在图形框与图像框都能满足设计需要时,应该优先考虑使用图像框。

本节,我们要实现两张不同图片在同一个图形框内的切换,同时可以启用与禁用图形框的自动适应功能。


图一(切换前)


图二(切换后)

一、设计:
1、创建如图一的界面:
显示标签:
Name:LblShow  Caption:现在显示的是第一张图

图形框控件:
Name:PicShow  AutoSize:None

自动适应复选框:
Name:ChkAutoSize

图片切换按钮:
Name:CmdShow  Caption:图片二

2、先在通用区声明如下变量:
Dim X As Integer
Dim IWidth As Integer
Dim IHeight As Integer

其中,X 准备用来做为图片切换的条件,当 X 为 1 ,图片切换按钮可以切换到图片二;当 X 为 2 ,图片切换按钮可以切换到图片一。

IWidth 与 IHeight 准备用来储存图形框的初始宽度与高度,以便在图形框发生大小变化后回复到原样。

3、程序打开时自动载入图片一:
这样,图片切换按钮就应该能够切换到图片二,所以将 1 赋给 X :

Private Sub Form_Load()
PicShow.Picture = LoadPicture("E:\稿件\Ccidnet\vb\image\vb3-2-1-copy.gif")
X = 1
End Sub

4、自动适应功能的实现:
Private Sub ChkStretch_Click()
If ChkStretch.Value = 1 Then
IWidth = PicShow.Width
IHeight = PicShow.Height
PicShow.AutoSize = True
Else
PicShow.AutoSize = False
PicShow.Width = IWidth
PicShow.Height = IHeight
End If
End Sub

上面程序的意思是,如果复选框被选中,那么先将原始图形框的宽度与高度赋给 IWidth、IHeight ,然后再通过激活 PicShow 的 AutoSize 功能达到图形框的自动适应;如果复选框没被选中,那么禁止 PicShow 的 AutoSize 功能,然后将图形框原来的高度(现在的 IHeight)和宽度(现在的 IWidth)赋值给图形框以恢复原样。

5、图片切换:
Private Sub CmdShow_Click()
If X = 1 Then
PicShow.Picture = LoadPicture("E:\稿件\Ccidnet\vb\image\vb3-2-2-copy.gif")
LblShow.Caption = "现在显示的是第二张图"
CmdShow.Caption = "图片一"
X = 2
Else
PicShow.Picture = LoadPicture("E:\稿件\Ccidnet\vb\image\vb3-2-1-copy.gif")
LblShow.Caption = "现在显示的是第一张图"
CmdShow.Caption = "图片二"
X = 1
End If
End Sub

在上面的程序中,先对 X 进行判断,如果 X 为 1 ,那么图形框显示图片二,显示标签改变成“现在显示的是第二张图”字样,作为图形切换的按钮,
Caption 变成“图片一”,然后再让 X 为 2 好进入另外一种情况;当 X 为 2 ,那么图形框显示图片一,显示标签与切换按钮发生相应变化。

二、联想
记得第一次设计这个程序时,并没有引入 X 这个辅助变量,而是通过鼠标点击的动作来进行判断的,即,当原始图形框中显示的是图片一,那么鼠标点击一次,即奇数次,图形框中会切换到图片二;当鼠标点击第二次,即偶数次,图形框可以切换到图片一;以此类推。所以可以通过次数取余,如果余数为 0 ,那么图形框可以切换到图片一;余数为 1 ,图形框可以切换到图片二。

具体程序大家可以自行思考,此处不再赘述。

利用直线与形状控件,可以使窗体上显示的内容更为丰富,如在窗体上增加简单的线条和实心图形,等等。

利用直线控件,可以建立简单的直线,通过修改其属性,还可以改变直线的粗细、色彩,以及线型。

通过设置形状的属性,用户可以画出圆、椭圆,以及圆角矩形,同时还能设置形状的色彩与填充图案。

主要属性:
除了其他通用属性外,直线与形状控件还具有一些比较独特的属性。

1、BorderStyle(边框类型),实用于直线与形状。
TransParent:透明,边框不可见。
Solid:实心边框,最常见。
Dash:虚线边框。
Dot:点线边框。
Dash-Dot:点划线边框。
Dash-Dot-Dot:双点划线边框。
Inside Solid:内实线边框。

2、FillStyle(填充类型),实用于形状。
Solid:实心填充。
TransParent:透明填充。
Horizontal Line:以水平线进行填充。
Vertical Line:以垂直线进行填充。
Upward Diagonal:向上对角线填充。
Downward Diagonal:向下对角线填充。
Cross:交叉线填充。
Diagonal Cross:对角交叉线填充。

3、Shape(形状),实用于形状。
Rectangle:矩形。
Square:正方形。
Oval:椭圆形。
Circle:圆形。
Rounded Rectangle:圆角矩形。
Rounded Square:圆角正方形。

除了前面谈到的用控件显示与绘制图形的方法外,VB 还提供了一组庞大的方法用来绘制点、线、面,以及设置前景、背景色等各种方法。

一、设置当前绘图点:
在 VB 中,可以通过设置窗体或图形框的 CurrentX 与 CurrentY 属性来设置当前绘图点。CurrentX 与 CurrentY 决定了绘制或显示的起始坐标,在设计时,这两个属性不可用。

二、绘制点、线、面的方法:
1、点的绘制法:
在指定对象(如窗体、图形框)上的指定位置处绘制点,还可以为点指定颜色,语法如下:

对象名.Pset (X,Y),[Color]

X ,Y 分别为点的水平与垂直坐标,Color 为点的颜色,是可选项。 2、直线的绘制法:

在对象上绘制直线,语法如下:

对象名.Line (X1,y1) - (X2,Y2), [Color]

(X1,Y1) 是直线的起点,(X2,Y2)是直线的终点,Color 为可选项。

如图一:


图一

2、图形框的代码是:
Private Sub Picture1_Click()
Picture1.Line (350, 1020)-(2050, 1020)
End Sub

3、绘制矩形:
用 Line 方法还可以绘制矩形,语法如下:

对象名.Line (X1,Y1) - (X2,Y2), [Color], B ,[F]

其中,(X1,Y1) 是矩形的左上角座标,(X2,Y2)是矩形右下角座标,Color 为矩形边框的颜色,使用参数 B 而不用 F ,那么矩形用当前的填充色(FillColor)与填充方式(FillStyle)对矩形进行填充;如果使用了参数 F ,那么矩形以边框的颜色进行填充。如图二:


图二

特别注意,用 Line 画矩形框,如果不用其他参数,那么 B 与坐标(X2,Y2)之间应该有两个逗点,一个是紧跟坐标2,一个表示 Color 省略了,如:Picture1.Line (500,500) - (1000,1000),,B

4、绘制圆、椭圆、弧:
用 Circle 方法可以绘制圆、椭圆与弧,语法如下:

对象名.Circle (X,Y), Radius, [Color,start,end,aspect]

其中,(X,Y)是圆、椭圆或弧的圆心坐标,Radius 是半径,这两个参数是必须项;Color 是圆的轮廓色,Start 与 End 是弧的起点与终点位置。其范围是 -2 —— 2Pi ;Aspect 是圆的纵横尺寸比,默认值是 1 即圆,如图三:


图三

三、颜色、前景与背景色的设置:
1、颜色函数 RGB()
在前面关于卷动条控件(综合示例五)的讲解中,我们讲述了色彩的设置问题,而这正是 RGB 颜色函数的原理所在。色彩设置的方法如下:

RGB(Red,Green,Blue)

不要忘了,Red、Green、Blue 每种色彩各有 0——255 种成份,三种色彩不同参数的搭配,就产生了丰富多采的现实世界。

2、前景色的设置:
通过对 ForeColor(前景色属性)的设置,可以返回或设置对象的前景色。

3、背景色的设置:
对 BackColor 属性进行设置,就可以返回或设置对象的背景色。

4、图形的清除:
用 Cls 方法可以清除窗体或图形框在程序运行中绘制的图形,语法如下:

对象名.Cls


类别:Visual Basic||添加到搜藏 |分享到i贴吧|浏览(346)|评论 (0)
 
最近读者:
 
网友评论:
发表评论:
姓 名:
网址或邮箱: (选填)
内 容:
     

   
帮助中心 | 空间客服 | 投诉中心 | 空间协议
©2012 Baidu