VB学习资料第十一章 图形操作.docx
- 文档编号:27993930
- 上传时间:2023-07-07
- 格式:DOCX
- 页数:27
- 大小:209.58KB
VB学习资料第十一章 图形操作.docx
《VB学习资料第十一章 图形操作.docx》由会员分享,可在线阅读,更多相关《VB学习资料第十一章 图形操作.docx(27页珍藏版)》请在冰豆网上搜索。
VB学习资料第十一章图形操作
11.1.1默认坐标系统
VisualBasic系统中的每个容器都有一个坐标系,如图11-1所示。
构成一个坐标系,需要三个要素:
坐标原点、坐标度量单位、坐标轴的长度与方向。
坐标度量单位由容器对象的ScaleMode属性决定。
缺省时为Twip。
每英寸1440个Twip,20个Twip为一磅。
图11-1
11.1.2用户自定义坐标系统
一、设置坐标系统的刻度单位
用户可根据实际需要用ScaleMode属性设置坐标系统的刻度单位。
ScaleMode属性的取值及含义如下表11-1所示。
表11-1
内部常数
值
含义
VbUser
0
指出ScalHeight、ScalWidth、ScaleLeft、ScaleTop属性中的一个或多个设置为自定义的值。
VbTwips
1
(缺省值)单位是缇
VbPoints
2
磅
VbPixels
3
像素(监视器或打印机分辨率的最小单位)
VbCharacters
4
字符(水平每个单位=120缇;垂直每个单位=240缇)
VbInches
5
英寸
VbMillimeters
6
毫米
VbCentimeters
7
厘米
说明:
◆当设置容器对象(例如,窗体或图片框)的ScaleMode属性值>0,将使容器对象的ScaleLeft和ScaleTop自动设置为0,ScaleHeight和ScaleWidth的度量单位也将发生改变。
◆用ScaleMode属性只能改变刻度单位,不能改变坐标原点及坐标轴的方向。
二、使用Scale属性建立自己的坐标系
(一)重新定义坐标原点
属性ScaleTop,ScaleLeft的值用于控制对象左上角坐标,改变坐标系的原点位置。
所有对象的ScaleTop,ScaleLeft属性的缺省值为0,坐标原点在对象的左上角。
同样,ScaleLeft的设置值可向左或向右平移坐标系的Y轴。
【例】在图11-2所示的窗体中,按下命令按钮将标签移动到坐标原点。
若使用以下代码:
PrivateSubCommand1_Click()
Label1.Left=0
Label1.Top=0
EndSub
则使用默认的坐标系统,原点在窗体的左上角,运行时单击按钮“将标签移动到原点”,标签位置则如图11-3所示。
如果改用以下代码:
PrivateSubCommand1_Click()
Form1.ScaleLeft=200
Form1.ScaleTop=300
Label1.Left=0
Label1.Top=0
EndSub
运行时单击按钮,标签的位置如图11-4所示。
这是因为ScaleLeft和ScaleTop属性将窗体左上角的坐标定义为(200,300)。
若将代码改写为:
PrivateSubCommand1_Click()
Form1.ScaleLeft=200
Form1.ScaleTop=300
Label1.Left=200
Label1.Top=300
EndSub
则运行时单击按钮,标签的位置如图11-3所示。
图11-2图11-3图11-4
(二)重定义坐标轴方向和度量单位
属性ScaleWidth,ScaleHeight的值可确定对象坐标系X轴与Y轴的正向及最大坐标值。
缺省时其值均大于0,此时,X轴的正向向右,Y轴的正向向下。
对象右下角坐标值为(ScaleLeft+ScaleWidth,ScaleTop+ScaleHeight)。
注意:
如果ScaleWidth的值小于0,则X轴的正向向左,如果ScaleHeight的值小于0,则Y轴的正向向上。
【例】使用ScaleWidth和ScaleHeight[zd]改变窗体刻度单位。
设窗体高度是2000Twips,宽度是3000Twips。
此时水平和垂直刻度单位均为1Twips。
如果设置:
ScaleHeight=500,则将窗体的高度划分为500个单位,每个单位为2000/500,即4Twips。
如果设置:
ScaleWidth=1000,则将窗体的宽度划分为1000个单位,每个单位为3000/1000,即3Twips。
注意:
将ScaleHeight、ScaleWidth、ScaleLeft与ScaleTop属性设置为任何值都自动将ScaleMode设置为0。
(三)利用Scale方法设置坐标系
格式:
[对象.]Scale[(xLeft,yTop)-(xRight,yBottom)]
其中:
xLeft,yTop:
对象的左上角坐标值。
xRight,yBottom:
对象的右下角坐标值。
注意:
可在程序中使用Scale方法改变坐标系统。
当Scale方法不带参数时,取消用户定义的坐标系,采用缺省坐标系。
【例】在图片框Picture1中打印5行5列的单位矩阵。
PrivateSubPicture1_Click()
Dima(5,5)AsInteger
Picture1.Scale(0,0)-(6,6)
Fori=1To5
Picture1.CurrentY=i
Forj=1To5
Ifi=jThena(i,j)=1Elsea(i,j)=0
Picture1.CurrentX=j
Picture1.Printa(i,j);
Nextj
Nexti
EndSub
图11-5
11.2.1CurrentX、CurrentY属性
CurrentX属性:
设置或返回窗体或图形框或打印机在绘图时的当前坐标的水平坐标。
CurrentY属性:
设置或返回窗体或图形框或打印机在绘图时的当前坐标的垂直坐标。
格式:
object.CurrentX[=x]
object.CurrentY[=y]
注意:
当使用某些图形方法后,对象的CurrentX和CurrentY的设置值将发生变化。
这两个属性在设计阶段不能使用。
【例】以窗体中心为原心,随机向各个方向绘200条直线。
代码如下:
PrivateSubForm_Click()
DimiAsInteger
'定义坐标系统
Form1.Scale(-100,100)-(100,-100)
Fori=0To200
CurrentX=Rnd*100*Sgn(Rnd-0.5)
CurrentY=Rnd*100*Sgn(Rnd-0.5)
ForeColor=QBColor(iMod16)'设置前景颜色
Line(0,0)-(CurrentX,CurrentY)
Nexti
EndSub
11.2.2线宽与线型
一、设置线宽——DrawWidth属性
窗体、图形框或打印机的DrawWidth属性给出这些对象上所画线的宽度或点的大小。
格式:
[Object.]DrawWidth[=Size]
其中:
Object:
为对象表达式,可以是窗体、图片框和打印机对象。
Size:
为数值表达式,其范围从1到32767。
该值以像素为单位表示线宽。
缺省值为1,即一个像素宽。
二、设置线型——DrawStyle属性
窗体或图形框或打印机的DrawStyle属性给出这些对象上所画线的形状。
格式:
[Object.]DrawWidth[=number]
其中:
Object:
为对象表达式,可以是窗体、图片框和打印机对象。
Number:
为整型表达式,值的范围是0~6,用来指定图形方法输出的线型。
其设置值及含义如下表11-2所示。
表11-2
内部常数
设置值
线型
图示
VbSolid
0
实线(缺省)
VbDash
1
长划线
VbDot
2
点线
VbDashDot
3
点划线
VbDashDotDot
4
点点划线
VbInvisible
5
透明线
VbInsideSolid
6
内实线
【例】用不同的DrawStyle属性值,在窗体分别画一条直线。
代码如下:
PrivateSubForm_Click()
DimIAsInteger'声明变量.
DrawWidth=1
ScaleHeight=8'将窗高设置为8个单位
ForI=0To6
DrawStyle=I'改变线形
Line(0,I+1)-(ScaleWidth*2/3,I+1)'画新线
'在当前点Y坐标向上移0.25个刻度单位
CurrentY=CurrentY-0.25
Print"DrawStyle=";DrawStyle'在当前点输出DrawStyle
NextI
EndSub
11.2.3图形的填充
封闭图形的填充方式由FillStyle决定,填充颜色和线条颜色由FillColor属性决定。
一、填充方式——FillStyle属性
FillStyle属性用来设置填充Shape控件及由Circle和Line图形方法生产的圆和方框的方式。
图11-8是形状控件的FillStyle属性设置为0~8时的填充效果。
图11-8
说明:
◆FillStyle为0是实填充,1为透明方式。
填充图案的颜色由FillColor属性来决定。
◆对于窗体和图片框对象,FillStyle属性设置后,并不能看到其填充效果,而只能在使用Circle和Line图形方法生成的圆和方框时,在圆和方框中显示其填充效果。
二、FillColor属性
用于设置填充形状的颜色,缺省情况下,FillColor设置为0(黑色)。
11.2.4AutoRedraw属性
AutoRedraw属性设置和返回对象或控件是否能自动重绘。
若值为True,使Form对象或PictureBox控件的自动重绘有效,图形和文本输出到屏幕,并存储在内存中,该对象不接受绘制事件(Paint事件)。
重绘:
当改变对象大小或隐藏在另一个对象后又重新显示的情况下,重新将以前使用Print方法输出的文本信息和绘图方法绘制的图形显示出来。
11.2.5图形颜色
在VisualBasic系统中,所有的颜色属性都由一个Long整数表示。
在代码中可使用4种方式给颜色赋值:
◆使用RGB函数
◆使用QBColor函数,选择16种Qbasic颜色中的一种。
◆使用系统提供的颜色常数。
◆直接使用Long型颜色值。
一、使用RGB函数
RGB函数可返回一个Long整数,用来表示一个RGB颜色值。
格式:
RGB(red,green,blue)
说明:
◆可以用RGB函数来指定任何颜色,因为每一种可视的颜色,都是由red,green,blue(红、绿、蓝)3种颜色组合产生,对每种颜色赋给从0~255之间的一个亮度值(0表示亮度最低,而255表示亮度最高)。
例如:
Form1.BackColor=RGB(255,0,0)'设定背景为红色
二、使用QBColor函数
QBColor函数可返回一个Long值,用来表示所对应颜色值的RGB颜色码。
格式:
QBColor(color)
说明:
◆color参数是一个界于0~15的整型数,分别代表16种颜色,其中:
0—黑色 1—蓝色 2—绿色 3—青色
4—红色 5—紫红色 6—黄色 7—浅灰色
8~15为0~7颜色加亮。
三、使用系统定义的颜色常数
在VB系统中已经预先定义了常用颜色的颜色常数,如常数vbRed就代表红色,vbGreen代表绿色等等。
可在“对象浏览器”中查询常数列表。
VbBlack:
黑色
VbRed:
红色
VbGreen:
绿色
VbYellow:
黄色
VbBlue:
蓝色
VbMagenta:
洋红色
VbCyan:
青色
VbWhite:
白色
例如,要将窗体的背景色设为红色。
则可使用如下语句:
Form1.BackColor=vbRed
四、直接使用颜色设置值
用十六进制数指定颜色的格式为:
&HBBGGRR
其中,BB指定蓝颜色的值,GG指定绿颜色的值,RR指定红颜色的值。
每个数段都是两位十六进制数,即从00~FF。
例如:
Form1.BackColor=&HFF0000
它相当于:
Form1.BackColor=RGB(0,0,255)
11.3.1图片框控件PictureBox和图像框控件Image
在设计Windows应用程序的用户界面时,如果适当地加入一些图形,会使界面丰富多彩。
人们往往事先制作好一些图形,并把它们以文件的形式存储在磁盘或光盘中。
VB提供了图片框(PictureBox)工具和图像框(Image)工具。
它们都是VB工具箱中的控件。
图片框图标为
,图像框图标为
。
图片框控件(PictureBox)和图像框控件(Image)主要支持以下格式的图形文件。
1、位图(bitmap):
位图通常以.bmp或.dib为文件扩展名。
2、图标(icon):
以.ico为文件扩展名。
3、元文件(metafile):
元文件的类型有两种,分别是标准型(.wmf)和增强型(.emf)。
4、JPEG文件:
JPEG是一种支持8位和24位颜色的压缩位图格式。
它是Internet上一种流行的文件格式。
5、GIF文件:
GIF是一种压缩位图格式。
它可支持多达256种的颜色,是Internet上一种流行的文件格式。
一、图片框控件PictureBox
(一)图形文件的加载
1、在设计阶段加载
◆可以用属性窗口中的Picture属性装入图形文件。
◆利用剪贴板把图形粘贴到图片框中。
2、在运行期间加载
在运行期间,可以用LoadPicture函数把图形文件装入图片框中。
格式:
对象名.Picture=LoadPicture([filename])
其中:
◆filename为包含全路径名或有效路径名的图片文件名。
例如:
Picture1.Picture=LoadPicture("c:
\ProgramFiles\MicrosoftOffice\Clipart\Popular\clock.wmf")
可以把一个图元文件加载到名为Picture1的图片框中。
如果图片框中已有图形,则被新装入的图形覆盖。
图片框中的图形也可以用LoadPicture函数删除,只要用一个“空”图形覆盖原来的图形就能实现。
(二)图形文件的保存
图形文件的保存,可以使用SavePicture语句。
格式:
SavePicture[对象名.]Picture|Image,FileName
一般以BMP格式保的文件进行保存。
但若图片框或图像框原来的格式为ICON或Meta格式,则保存时以原格式进行保存。
二、图像框控件Image
图像框(Image)也可以用来装入图形文件,具体的使用方法与图片框类似。
既可以在设计阶段给Image控件的Picture属性赋值(赋以一个图形文件的名字),也可以在运行阶段通过LoadPicture函数装入图形文件。
图像框控件与图片框控件的用法基本一致,但有以下区别:
(一)图片框控件可以作为其它控件的容器,例如可以在图片框内画一个命令按钮。
如果移动图片框,则命令按钮随之一起移动(命令按钮成为图片框的一个组成部分)。
如果单独移动命令按钮,只能在图片框范围内移动,不能移到图片框外去。
而图像框控件不行。
(二)图片框可以通过Print方法接收文本,而图像框则不能接收用Print方法输入的信息。
(三)图像框比图片框占用的内存少,显示速度快。
在用图像框控件与图片框控件都能满足需要的情况下,应优先考虑使用图像框控件。
三、两个重要属性
(一)AutoSize属性
该属性用于图片框。
决定控件是否自动改变大小以显示图像全部内容。
缺省值为False,此时保持控件大小不变,超出控件区域的内容被裁减掉;若值为True时,自动改变控件大小以显示图片全部内容(注意:
不是图形改变大小)。
(二)stretch属性
用于图像框。
当该属性的取值为False时,图像控件将自动改变大小以与图形的大小相适应;当其值为True时,显示在控件中的图像的大小将完全适合于控件的大小,这时,图片可能会变形。
【例】将一个图形文件放到图像框中,改变图像框的大小,观察图形是否随之改变大小。
用户设计界面如图11-9所示。
图11-9
PrivateSubCommand1_Click()
Image1.Left=Image1.Left-Image1.Width/2
Image1.Width=Image1.Width*2
EndSub
PrivateSubCommand2_Click()
Image1.Left=2325
Image1.Top=600
Image1.Height=1515
Image1.Width=1515
EndSub
PrivateSubCommand3_Click()
Image1.Left=Image1.Left-Image1.Width/2
Image1.Height=Image1.Height*2
Image1.Width=Image1.Width*2
EndSub
PrivateSubCommand4_Click()
End
EndSub
PrivateSubForm_Load()
Image1.Picture=LoadPicture("C:
\ProgramFiles\CommonFiles\MicrosoftShared\Clipart\cagcat50\AN02097_.WMF")
EndSub
单击“改变高和宽”按钮,结果如图11-10所示。
图11-10
11.3.2形状控件Shape
使用Shape控件可在窗体、框架或图片框中创建矩形、正方形、椭圆形、圆形、圆角矩形或圆角正方形等图形。
一、属性
Shape控件预定义形状是由Shape属性的取值决定的。
Shape控件的Shape属性、FillStyle属性、BackColor属性、FillColor属性取不同值对应的形状如图11-11所示。
图11-11
程序代码如下:
PrivateSubcmdcolor_Click()
Fori=0To5
shape1(i).FillStyle=1
shape1(i).BackStyle=1
shape1(i).BackColor=QBColor(i)
Label1(i).Caption="i="&Str(i)
Nexti
EndSub
PrivateSubcmdexit_Click()
End
EndSub
PrivateSubcmdfill_Click()
Fori=0To5
shape1(i).FillStyle=i+2
Label1(i).Caption="i="&Str(i+2)
Nexti
EndSub
PrivateSubcmdshape_Click()
Fori=0To5
shape1(i).Shape=i
Label1(i).Caption="i="&Str(i)
Nexti
EndSub
二、Move方法
格式:
对象名.Moveleft[,top[,width[,height]]]
【例】在窗体上移动一正方形,每次移动时使正方形的长和宽增加100缇。
代码如下:
PrivateSubCommand1_Click()
Shape1.MoveShape1.Left+100,Shape1.Top+100,_
Shape1.Width+100,Shape1.Height+100
EndSub
11.3.3直线控件Line
一、作用
设计时在窗体上绘制直线。
利用线与形状控件,用户可以迅速地显示简单的线与形状或将之打印输出,与其他大部分控件不同的是,这两种控件不会响应任何事件,它们只用来显示或打印。
二、属性
BorderStyle、BorderWidth、X1、X2、Y1、Y2。
对于线控件来说,程序运行时最重要的属性是“X1”、“Y1”、“X2”、“Y2”属性,这些属性决定着线显示时的位置坐标,“X1”属性设置(或返回)了线的最左端水平位置坐标,“Y1”属性设置(或返回)了最左端垂直坐标,“X2”、“Y2”则表示右端的坐标。
注意:
运行时可以通过改变X1、X2、Y1和Y2属性来移动它或者调整它的大小。
而不能使用Move方法。
【例】利用Line控件在图片框上画出八种类型的线,如图11-12所示。
图11-12
按钮“显示”的程序代码如下:
PrivateSubCommand2_Click()
Picture1.BackColor=QBColor(0)
Fori=0To7
Picture1.FillStyle=i
Picture1.FillColor=QBColor(i+7)
i1=i+1
Picture1.Line(300*i1,400*i1)-(110*i1,220*i1),QBColor(12),B
Nexti
EndSub
11.4.1Pset方法
用Pset方法能够在屏幕上画出一个点。
例如:
Pset(100,150)。
上述语句的作用是在窗体上(100,150)处画出一个点。
格式:
[<对象名>.]PSet[Step](x,y)[,<颜色>]
功能:
在对象的指定位置,用一定的颜色画点。
说明:
◆<对象名>:
窗体、图片框、缺省为当前窗体。
◆Step:
可选的,指定相对于由CurrentX和CurrentY属性提供的当前图形位置的坐标。
◆(x,y):
点的水平和垂直坐标。
◆<颜色>:
绘制该点的RGB颜色。
省略时使用<对象名>的ForeColor属性值。
【例】用PSet方法在窗体上绘制一条如图11-13所示的星形曲线,曲线由以下参数方程决定:
图11-13
程序代码如下:
PrivateSubForm_Click()
Scale(-1,1)-(1,-1)
DrawWidth=2
ForeColor=vbRed
Fort=0To2*3.1415926Step0.001
x=Sin(2*t)*Cos(t)
y=Sin(2*t)*Sin(t)
PSet(x,y)
Nextt
EndSub
11.4.2Line方法
为了在两点之间绘制一条直线,除了使用直线控件外,VB还提供了Line方法。
格式:
[[<对象名>.]Line[Step][(x1,y1)]-[Step](x2,y2)[,<颜色>[,B[F]]]
功能:
在指定两点之间用指定的颜色画线或矩形
说明:
◆<对象名>:
窗体、图片框,缺省为当前窗体。
◆Step:
可选的,指定相对于由CurrentX和CurrentY属性提供的当前位置的坐标,即从当前坐标移动相应的步长后所得的点为画线起点。
◆(x1,y1):
直线或矩形的起点坐标。
如果
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- VB学习资料第十一章 图形操作 VB 学习 资料 第十一 图形 操作