Visual Basic可视化编程中图形处理方法
2009-03-14姚茂群
姚茂群
[摘要]阐明Visual Basic可视化编程方法进行图形程序设计的通用方法,以具体实例说明了Visual Basic图形处理过程中坐标设置、像素点、图形、颜色值的定义、读取、处理及各种图形艺术化处理的技术和方法,并给出处理图形的应用程序。
[关键词]VB 图形方法 像素 过程代码
中图分类号:TP3文献标识码:A文章编号:1671-7597(2009)0220069-01
一、引言
Visual Basic作为功能强大的Windows程序开发工具软件,由于它具有先进的设计思想、快速易掌握的使用方法及图形处理技术手段灵活多样等特点,受到了软件开发人员的关注和青睐,因此成为图形处理应用程序开发的理想工具。VB提供了与图形有关的控件,如图形框PictureBox、图像框Image、直线Line与形状Shape,还提供了完善的做图方法,可以在窗体或图形框中绘制各种图形,如Line方法、Circle方法、Paintpicture方法等。
二、图形方法
图形方法是一种在程序运行过程中绘制图形的手段,它可以经过计算,精确地设计图形的位置与外形,并可以按照不同的算法,生成各种复杂的图形。下面列举VB中简单图形方法及图形处理所需程序代码。
(一)直线和矩形的绘制——Line方法
Line方法具有在object指定对象上画直线和矩形两种功能。
命令格式:object. Line [STEP][(X1,Y1)]-[STEP](X2,Y2).[颜色],[B][F]
其中:objet可以是窗体或图形框;(X1,Y1),(X2,Y2)分别表示线条的起点和终点坐标。颜色表示画线时用的RGB颜色;B表示画直线还是画矩形,F规定矩形以及边框的颜色填充
(二)图象处理——PaintPicture方法
PaintPicture方法可以将图像框、图形框或窗体中的一个矩形区域的像素,复制到图像框、窗体对象中,并且源像素与目标像素可以有多种组合方式,形成各种有趣的显示效果, 使用它可以完成很多图像的特殊处理工作。
命令格式:object PaintPicture Pic,dx,dy,dw,dh,sx,sy,sw,sh,[,
操作码]
其中Pic:为图片对象,如图形框、图像框或窗体等;dx,dy:目标图像左上角坐标位置;
dw,dh:目标图像的宽和高尺寸;sx,sy:原图像的左上角坐标;sw,sh:原图像的宽和高尺寸;
操作码指定源像素与目标像素的组合方式,共有256种不同的方式。
从以上格式可以看出,此命令可以通过改变参数dw与dh值,改变复制后的图像的尺寸,实现放大或缩小图像显示,甚至可以置这两个属性为负值,这样可使目标图像在水平方向、垂直方向翻转,实现特殊效果的图像显示。
三、图形方法的使用拓展
(一)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窗体中创建图形框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图形处理技术,天津职业技术师范学院学报.
[3]潘小轰,中文Visual Basic 程序设计基础教程,冶金工业出版社.