Transcript 项目五
项目五 图形控件与绘图操作
项目五 图形控件与绘图操作
学习目的:
掌握绘图操作必需的图形基础知识及坐标系统的
作用和定义。
掌握常用图形控件(PictureBox、Image、Line、
Shape)的使用方法、控件的常用属性和事件。
掌握图形操作的常用方法(PSet、Line、Circle)
与技巧。
活动一
认识VB坐标系统
一、VB坐标系统
VB坐标系统是一个二维坐标系统,是由坐标原点、坐标度量
单位、坐标X轴和坐标Y轴组成。
在VB中,有两种坐标系统:一种是VB提供的标准坐标系统,
另一种是用户自定义坐标系统。
1、标准坐标系统
在标准坐标系统中,均以容器的左上角为该坐标系统的坐标
原点(0,0),坐标轴的默认单位都是缇。
ScaleMode属性
每个容器都有一个坐标系,坐标度量单位由容器对象
的ScaleMode属性决定,ScaleMode属性设置如表1所
示。
表1
属性值
0
1
2
3
4
5
6
7
ScaleMode属性设置
单
位
用户定义
缇
磅
像素
字符
英寸
毫米
厘米
说 明
User
Twip缺省值
Point
Pixel
Charecter缺省为高12磅,宽20磅
Inch
Millimeter
Centimeter
y
2000
x
(0,0)
自定义坐标
(-1000,750)
(0,0)
x
1500
y
(1000,-750)
一、VB坐标系统
2、自定义坐标系统
在VB的窗体对象中也可以使用自定义的坐标系统。
在自定义坐标系统中,可以任意规定坐标轴的方
向,使用任意的长度单位。
对于窗体来说,Left、Top、Width和Height属性
的单位永远是缇。其中Left、Top分别是窗体的
外边框到屏幕左边、上边的距离;Width和
Height分别是包括窗体的边框和标题栏在内的宽
度和高度。
一、VB坐标系统
方法1:通过Scale方法设置坐标系统。
格式:[对象.]Scale(x1,y1)-(x2,y2)
说明:
(1)对象可以是窗体、图片框或打印机。
(2)参数(x1,y1)和(x2,y2)分别指定对象的左上角和右
下角的新坐标。
例:Form1.Scale(100,100)-(500,500)
表示窗体Form1的坐标系统为:左上角坐标(100,100),右下角坐标
(500,500)。
ScaleWidth=x2-x1
ScaleHeight=y2-y1
执行无参数的Scale方法,则会取消用户自定义坐标系统。
恢复为标准坐标系统(以缇为单位,以(0,0)点为原点)。
【ScaleWidth】,【ScaleHeight】属性
功能:设置或返回X轴长度和Y轴长度。
说明:【ScaleWidth】,【ScaleHeight】属性可以设为负
值,但此时的负值并不表示X轴的长度、Y轴的长度为负值,
而是用来规定X轴、Y轴的正方向。如果【ScaleWidth】属
性为负,则表示X轴的正方向为向左;如果【ScaleHeight】
属性为负值,则表示Y轴的正方向为向上。
一、VB坐标系统
方法2:通过对象的ScaleLeft、ScaleTop、ScaleWidth、
ScaleHeight属性来实现。
标准坐标系统中,ScaleLeft和ScaleTop属性总是0;
ScaleWidth和ScaleHeight属性则是根据坐标系统的长度单位
计算的对象内部区域的实际宽度和高度。
当改变ScaleTop或ScaleLeft的值后,坐标系的X轴或Y轴按此
值平移形成新的坐标原点。右下角坐标值为
(ScaleLeft+ScaleWidth,ScaleTop+ScaleHeight)。X轴与Y轴
的度量单位为分别为1/ScaleWidth和1/ScaleHeight。
例:Scale(x1,y1)-(x2,y2)
等同于设置以下四个属性:
ScaleLeft=x1
ScaleTop=y1
ScaleWidth=x2-x1
ScaleHeight=y2-y1
一、VB坐标系统
【例1】在窗体的单击事件中,用属性定义图
片框的坐标系。
【例2】在窗体中单击命令按钮,用Scale方
法定义图片框的坐标系。
二、直线控件(Line)
直线控件(Line)用来在窗体和其他容器控件中创建简单的线
段,它没有自己的特殊方法,也不产生任何事件。设计和运
行时可以通过它的属性来改变它的位置、粗细和颜色等。
1. 常用属性
(1)BorderColor属性:设置直线的颜色。
(2)BorderWidth属性:设置直线的粗细。
(3)BorderStyle属性:设置直线样式。0~6种类型,1—
实线,6—内实线。
2. 特有属性
x1,x2,y1,y2属性:指定起点和终点的x坐标及y坐标。可
以通过改变x1,x2,y1,y2的值,来改变线的位置和长度。
说明:
直线控件没有Left、Top、Width和Height属性,运行时
也不能用Move方法决定直线的位置和长短。
三、Pset方法
格式:[对象名.]PSet(x,y)[,颜色]
功能:在窗体或图片框上画出一个点。对象缺省时,为窗体。
说明:
(1)(x,y)为要画点的坐标。
(2)颜色:是指要画点的颜色。缺省时,PSet用“前景色”
画点,如想删除一个点,则用“背景色”画点。
例如:
Picture1.PSet(1500,1000),RGB(255,0,0)
在图片框Picture1中(1500,1000)处画一个红色的点。
四、AutoRedraw属性
AutoRedraw属性是窗体和图片框的属性。
当使用Line、Circle、Pset、Point、Print等方法创建的
图形和文字在屏幕中暂消失,窗体复原后,这些图形或
文字无法自动恢复。当设置AutoRedraw属性值为True
后,则可以自动恢复,否则要由Paint事件过程完成。
例:在图片框上随机画100个闪烁的彩色圆点。
活动一实例
活动二 图形控件的运用
图形控件有直线控件(Line)、形状控件
(Shape)、图像框(Image)、图片框
(PictureBox),本节分别介绍其程序设计方
法。
一、形状控件
使用形状控件(Shape)可在窗体或其他控件容
器中画出矩形、正方形、圆、椭圆、圆角矩
形或圆角正方形。形状控件的Shape属性决定
了它的图形样式,这个属性的所有可能取值
都有对应的形状样式。
1.形状控件的常用属性
(1)Left、Top、Width和Height属性决定形状控件的位置和
大小,也可以用Move方法改变它的大小和位置。
(2)BorderWidth属性设置图形边界宽度。它的值是以像素为
单位的边线宽度。
(3)BorderColor属性设置图形边界颜色。
(4)BorderStyle属性设置边界线的类型。
(5)FillColor属性设置图形的前景颜色。
如果要为图形填充颜色(背景)时,首先应该将属性
FillStyle(填充方式)设置成1(透明),否则FillColor(前
景色)的颜色会遮盖了背景色,达不到预期的目的。
例如,将图形的FillStyle属性的值设为0(实心,不透
明),FillColor(填充颜色)为蓝色,此时,不论BackColor
为何种颜色,都被蓝色所遮盖,如果将FillStyle改为1(透
明),则图形内显示背景色。
2.形状控件的特有属性
(1)Shape属性
该属性用来设置图形的形状。
0——Rectangle
矩形
1——Square
正方形
2——Oval
椭圆形
3——Circle
圆形
4——Rounded Rectangle 圆角矩形
5——Rounded Square
圆角正方形
Shape属性的缺省值为0(矩形)。若选择3,则用Shape
控件画出的矩形中画出一个圆(圆的直径是矩形的短
边)。
2.形状控件的特有属性
(2)BackStyle属性
该属性用来设置图形背景的风格
0——Transparent(透明)
1——Opaque(不透明)
缺省值为0。如果着色,显然要将BackStyle属性设置为
“不透明”。
(3)FillStyle属性
该属性用来设置图形填充的线形(风格或样式)。
【例1】用Shape属性显示形状控件的6种形状。
【例2】将形状控件显示不同的形状、设置不同的颜色,
填充不同的图案。
二、图片框
图片框(PictureBox)控件的主要作用是为用户显示图片,也
可作为其他控件的容器。实际显示的图片是由Picture属性
决定的。
1.特有属性
(1)Picture属性
Picture属性用于窗体、图片框和图像框。它可通过属性
窗口进行设置,也可在程序中进行设置,即使用
LoadPicture()函数,装入图片文件。在窗体、图片框和
图像框中显示的图形以文件形式存放在磁盘上,VB6.0支
持以下格式的图形文件。
①位图文件(Bitmap)
②图标文件(Icon)
③图元文件(Metafile)
④压缩位图文件(JPEG)
⑤压缩位图文件(GIF)
二、图片框
(2)AutoSize属性
图片框控件不能伸缩图像使图像适应它的大小。如果把
图片框控件的AutoSize属性设置为True,那么图片框控
件就会自动调整自身的大小以容纳整个图像。
2.图片框控件的特点
图片框控件的最大特点是,它的表现更像一个窗体对象,
它具有许多与窗体对象相似的属性和方法。窗体的所有
显示文本和图像的方法、作图方法以及与之相关的属性
在图片框控件中都有同名的方法和属性。图片框控件有
自己的坐标系统,也可以重新定义坐标系统。
二、图片框
3.图形文件的装入
图形文件的装入有两种方法:一种是在设计阶段装入,另一
种是在运行期间装入。
(1)在设计阶段装入图形文件
在设计阶段装入图形文件用两种方法:
(1)用属性窗口中的Picture属性装入
(2)利用剪切板装入
(2)在运行期间装入图形文件
Picture属性可以设置被显示的图片文件名(包括可选
路径名)。在程序运行时,可以使用LoadPicture()函
数,在图片框中装入图形。
二、图片框
LoadPicture()函数
格式:对象.Picture=LoadPicture("图形文件名")
功能:在对象中装入一个图形。
说明:
(1)对象可以是图片框或图像框,也可以是窗体,如果是
窗体,对象名可以省略。
(2)如果删除一个图形,可以使用LoadPicture()函数,
将一个空白图形装入对象的Picture属性。
格式:对象.Picture=LoadPicture()
例:在图片框装入图形:
Picture1.Picture=LoadPicture(“d:\a1.jpg”)
删除图形: Picture1.Picture=LoadPicture()
二、图片框
装入图片框中的图形,可以拷贝到另一个图片框中。假设在
窗体中已建立了两个图片框:Picture1与Picture2,则用:
Picture1.Picture=LoadPicture("C:\Graphics\
Icons\Arrows\arw06up.ico")
Picture2.Picture=Picture1.Picture
可以把图片框Picture1中的图形拷贝到图片框Picture2
中。
4.常用事件
图像框可以响应Click和DblClick事件。
5.常用方法
在图片框中使用Cls方法和Print方法。
【例】在窗体上交换两个图片框中的图形。
二、图片框
PaintPicture方法
格式:对象.PaintPicture
Source,x1,y1,Width1,Height1,x2,y2,Width2,Height2,OpC
ode
说明:为图片框控件提供一个具有编辑功能的命令,使用该
方法可以对位图进行水平或垂直翻转,以及对图形进行拉伸、
压缩等操作。
source:被放置的源图像,必须在窗体或图片框的Picture属性中设
置。
X1,y1:图像左上角在目的对象中的位置。通过改变x1,y1的值来实现
图片的移动。
Width1,Height:图像在目的对象中的位置。通过改变目标图片的宽
度和高度来实现图片的拉伸和缩放。将width1,height1参数的值设
为负值,可以将图片翻转。
X2,y2:源对象中开始复制图像的位置,缺省时为0,即从源对象的左
上角开始复制图像。
Width2,Height:要复制的区域的宽度和高度,缺省时为整个图像。
二、图片框
【例】设计图片编辑器,能实现对图片进行简
单的水平翻转、垂直翻转、放大、缩小等操
作。
二、图片框
例:编程实现三个图片框中图片的轮换,并使得一个图片框
中可以显示整个图片。
(1)界面设计
在窗体上添加如图1所示三个图片框控件Picture1、
Picture2、Picture3。将Picture3的AutoSize属性设置为
True。其他属性值为默认值。
(a)设计时界面
(b)运行时界面
图1 图片框
(c)响应事件
二、图片框
(2)编写事件代码
在Form_Load()事件中加入如下代码:
Private Sub Form_Load()
Picture1.Picture = LoadPicture("c:\steamship.gif")
Picture2.Picture = LoadPicture("c:\bus.gif")
Picture3.Picture = LoadPicture("c:\car.gif")
End Sub
在Picture3_Click()事件中加入如下代码:
Private Sub Picture3_Click()
Form1.Picture = Picture3.Picture
Picture3.Picture = Picture2.Picture
Picture2.Picture = Picture1.Picture
Picture1.Picture = Form1.Picture
Form1.Picture = LoadPicture()
End Sub
三、图像框
1.常用属性
(1)Picture属性
该属性的功能与图片框的相同。
在图像框控件装入图片文件的方法和使用图片的文件
格式也与图片框相同。
(2)Stretch属性该属性用来自动调整图像框中图形内容
的大小,既可通过属性窗口设置,也可以通过程序代码
设置。该属性值为True或False。
其属性值为False时,图像框可以自动改变大小以适应
其中的图形。
其属性值为True时,加载到图像框中的图形,可以自
动调整尺寸以适应图像框的大小。
三、图像框
2.常用事件
图像框可以响应Click和DblClick事件。
3.图片框与图像框的区别
(1)图片框是容器控件,可以作为父控件,而图像框不
能作为父控件。
(2)图片框可以通过Print方法接收文本,而图像框不
能接收用Print方法输入的信息,也不能用绘图方法在图
像框上绘制图形。
(3)图像框比图片框占用内存少,显示速度快。
【例】编写程序,模拟交通信号灯的切换。
活动二实例
活动三 图形方法
图形方法有Pset、Line、Circle,本节通过
使用作图方法,进行画点、画直线、画矩形、
画圆、画椭圆、画圆弧等。
一、Line方法
格式:[对象.]Line (x1,y1)-(x2,y2)[,颜色][,
B[F]]
功能:在窗体或图片框上画出一条直线或一个矩形。
对象缺省时,为窗体。
说明:
(1)x1,y1:画线起始点的坐标,缺省时从对象的当前
位置开始画。
(2)x2,y2:画线结束点的坐标。
(3)颜色:线条的颜色,缺省时使用对象的前景色。
(4)如果没有参数B,则是画一条直线。
(5)如果有参数B,画一个矩形,指定参数F,表示要画
的是一个实心的矩形。(x1,y1)与(x2,y2)是所画矩形
的左上角和右下角的坐标。
Line(500,300)-(3000,2500),RGB(255,0,0)
在(500,300)与(3000,2500)之间绘制一条红色直线。
颜色函数
1.RGB颜色函数
RGB是一个颜色函数,“R”代表Red(红),“G”代表
Green(绿),“B”代表Blue(蓝),通过红、绿、蓝三
种基本色混合产生某种颜色。
格式:RGB(红,绿,蓝)说明:
(1)红、绿、蓝三种基本色使用0~255之间的整数。
(2)从理论上来说,三种基本色混合可产生
256×256×256种颜色,但是实际使用时受到显示硬件
的限制,普通显示卡只能显示16种颜色。
例如:
RGB(0,0,0)返回黑色。
RGB(255,0,0)返回红色。
RGB(255,0,255)的含义是无绿色的成分,红和
蓝成分相等,效果为紫红色。
这3个参数的不同值组合,可以产生许许多多
种颜色,表2列出了一些颜色的组合。
表2 RGB颜色函数
RGB函数
RGB(0,0,0)
RGB(255,0,0)
RGB(0,255,0)
RGB(0,0,255)
RGB(0,255,255)
RGB(255,0,255)
RGB(255,255,0)
RGB(255,255,255)
颜 色
黑色
红色
绿色
蓝色
青蓝色
紫红色
黄色
白色
2.QBColor函数
QBColor函数采用QuickBasic所使用的16种颜色。
格式:QBColor(颜色码)
说明:
(1)颜色码使用0~15之间的整数,每个颜色码代表一种
颜色。
(2)RGB函数与QBColor函数实际上都返回一个6位的16进
制的长整数,这个数从左到右,每两位一组代表一种基
色,他们的顺序是蓝绿红。因此,也可以直接用6位的
16进制颜色代码表示。在色彩的属性框中,可以看这些
代码。表3列出了QBColor颜色函数。QBColor(2)代表绿
色,QBColor(4)代表红色。
表3
颜色值
0
1
2
3
4
5
6
7
QBColor颜色函数
颜色
黑色
蓝色
绿色
青色
红色
粉红色
黄色
白色
颜色值
8
9
10
11
12
13
14
15
颜色
灰色
亮蓝色
亮绿色
亮青色
亮红色
亮粉红色
亮黄色
亮白色
例如:
Line(500,300)-(3000,2500),QBColor(12)
在(500,300)与(3000,2500)之间绘制一条亮红色直线。
Line –(3000,5000)
从当前位置开始到(3000,5000)画一条直线。
Line(500,300)-(3000,2500),QBColor(4),BF
此时画出一个内部填充红色的实心矩形。
二、Circle方法
1.用Circle方法画圆
格式:[对象名.]Circle(x,y),半径[,颜色]
功能:在窗体或图片框上画圆。
说明:x,y:为圆心的坐标位置。
例如:
Circle(2000,1000),500
Picture1.Circle(1000,400),500,QBColor(12)
2.用Circle方法画椭圆
格式:[对象名.]Circle(x,y),半径,[颜色],,,纵横比
功能:在窗体或图片框上画椭圆。
说明:纵横比是椭圆垂直半径与水平半径的比率。小于或大于
1画椭圆,1画圆。
例如:
Circle(2000,1000),500,,,,2
Picture1.Circle(1000,400),500,QBColor(12),,,0.5
Picture1.Circle(1000,400),500,QBColor(12),,,1
3.用Circle方法画圆弧及扇形
格式:[对象名.]Circle(x,y),半径[,颜色][,起始角]
[,终止角]
功能:在窗体或图片框上画圆弧及扇形。
说明:
(1)起始角与终止角:为所画圆或椭圆的起始角度与终止角
度,单位为弧度,取值为-2π~2π,缺省时,起始角为0,终
止角为2π。弧度增大方向是逆时针方向。
(2)起始角、终止角均为正时,则只画圆弧;如果两者之一
为负值时,不仅画圆弧,而且还会从圆心到负值的点画一条
直线。
角度换算成弧度的公式为:弧度=角度 * 3.14/180
活动三实例
绘图属性
1、当前坐标CurrentX和CurrentY属性:给出对象在绘图时的
当前坐标。
说明:对象是指窗体、图形框或打印机。
当重新设置窗体的坐标系统时,CurrentX和CurrentY
的值也将自动改变,但这两个数为坐标的点的实际位
置并不改变。
【例】使用CurrentX和CurrentY属性,在窗体上输出
如图所示的立体字效果。
绘图属性
2、线宽
(1)DrawWidth属性
该属性用于设置使用窗体或图片框对象的作图方法画线
时以像素为单位的线宽,其取值范围在1~32 767之间。
当DrawWidth属性的值较大时,画出的线就有一定的宽度。
(2)BorderWidth属性
该属性用于使用控件时定义线的宽度。
【例】在窗体上画一系列宽度递增的直线。
绘图属性
3、线型样式
(1)DrawStyle属性
该属性决定作图方法画线时的线型样式。
0——实线(缺省)
1——虚线
2——点线
3——点划线
4——双点划线
5——透明线(无线)
6——内实线
说明:当DrawWidth属性值大于1并且DrawStyle属性值为
1~4时,都能产生实线效果。
绘图属性
(2)BorderStyle属性
该属性用于使用控件时给出画线的样式。
0——透明线
1——实线(缺省)
2——长划线
3——点线
4——点划线
5——点点划线
6——内实线
绘图属性
4、填充
封闭图形的填充方式是由FillColor属性与FillStyle属性决
定的。
(1)FillColor属性
该属性指定填充图案的颜色,缺省颜色与ForeColor相同。
(2)FillStyle属性
该属性决定填充封闭图形的图案样式。
0——实心
1——透明
2——水平线
3——垂直线
4——向上对角线
【例】用FillStyle属性指定填充的图
案,共有8种图案。
5——向下对角线
6——交叉线
7——对角交叉线
活动四 动画的制作
(1)改变图像的位置和尺寸;
(2)在不同的位置显示不同的图像;
(3)在相同的位置显示不同的图像;
(4)使用Move方法移动控件或图像。
不论用何种方法,都必须使用计时器定时触发有
关动画的事件过程,用计时器的Interval属性控
件控制图像的移动频度。
活动四
动画的制作
1、Move方法
格式:对像名.Move (Left,[Top,Width, Height])
Left属性:指定对象的左边沿水平坐标。
Top属性:指定对象的上边沿垂直坐标。
Width属性:指定对象的新宽度。
Height属性:指定对象的新高度。
说明:
(1)只有Left参数是必须的,其他三个是可选的。
(2)在屏幕上移动窗体,或在窗体中移动控件时,都是相
对于原点(0,0),原点位于左上角。当在容器中移动控
件时,使用容器的坐标系。
例:
活动四
动画的制作
2、MouseMove事件
当移动鼠标光标时,在窗体或控件上发生MouseMove事件。
语法:Sub Object_MouseMove(Button As Integer, Shift
As Integer,X As Single, Y As Single)
说明:
(1)Object:指对象。
(2)Button:指鼠标哪个按钮被按下。1为左键,2为右键。
(3)Shift:对应于SHIFT、CTRL、ALT键的状态。1为SHIFT
键,2为CTRL键,4为ALT键。
(4)X,Y:鼠标指针当前位置。
例:
活动四
实例
动画的制作
项目五小结
强大的图形处理能力是Visual Basic 6.0精髓之一,用
Visual Basic 6.0来绘图既简单而且又容易,另外使用
Visual Basic 6.0还能够进行简单的图像处理和实现简单的
动画效果。
通过本章的学习,我们要掌握以下内容。
建立自定义坐标系的方法。
图片框和图像框两种控件的常用属性及其它们之间的区别。
简单的图像处理,包括图像的放大、缩小、移动和翻转。
线条类型、线条宽度、绘图模式、填充样式和填充颜色的
设置方法,其中绘图模式的理解是本章的难点。
使用绘图方法绘制常用的基本图形,包括点、直线、矩形、
圆、圆弧和椭圆。
使用直线控件和形状控件这两种专用绘图控件来绘制基本
图形。
简单动画效果的实现。