第八章 绘 图 (2学时)
一、教学内容
本章讨论如何在VB6.0中编写图形应用程序
二、目的要求
通过对本章的学习,使学生理解VB中坐标系的概念;掌握用Line控件、Shape控件画直线、矩形、圆(弧)、椭圆的方法;掌握图片框、图象框的常用属性、常用方法、图片的载入及应用;掌握用Pset方法、Line方法、Circle方法画点、矩形、圆(弧)、椭圆的方法;
三、教学重点与难点
教学重点: VB中坐标系,绘图方法的使用
教学难点:容器控件的坐标,及用户自定义坐标系。
四、教学方法
课堂教学为主。适当提问,加深学生对概念的理解。
五、教学过程
8.1 坐标系统
8.1.1 标准系统
坐标系三要素:坐标原点、坐标度量单位、坐标轴的长度与方向。
坐标度量单位由容器对象的ScaleMode属性决定。缺省时为Twip。每英寸1440个Twip,20个Twip为一磅。
在VB中规定,用ScaleMode属性设置绘图长度的单位而且只能设置8种规格,用Scalex或Scaley语句可对不同的单位进行相互转换。其格式如下:
1、[object.]scalex(width[,fromscale][,toscale])
2、[object.]scaley(width[,fromscale][,“”])
1式为不同单位横坐标之间的转换,2式为不同单位纵坐标之间的转换
“object”是ScaleMode方法的对象,缺省时指窗体
“width”时横坐标数值
“fromscale”是坐标的原始单位
“toscale”是坐标值转换后的单位
8.1.2 自定义坐标系统
在VB种可以通过设置ScaleMode属性来建立新的坐标系统。建立的新的坐标系统称为自定义系统。
用户可用ScaleMode属性设置坐标系统的刻度单位。ScaleMode属性的取值及含义见Pg173表8.1所示。
1、定义新的坐标系统格式如下:
[对象.]scaleleft=x
[对象.]Scaletop=y
其中,X是距离对象左边界的距离,Y是距离对象顶部的距离。如果省略“对象”,则在窗体内设置坐标原点,有了原点还必须有“刻度”,即水平方向、垂直方向的设置值,这样才能确定一个点的位置,建立起坐标系统。
【例8.1】 Scaleleft=100
Scaletop=50
以上两条语句,将坐标原点定义在了(100,50)
2、水平方向、垂直方向的刻度属性分别由Scalewidth,Scaleheight属性来设置,其格式如下:
[对象.] Scalewidth=宽度
[对象.] Scaleheight =高度
说明:
(1)当设置容器对象(例如,窗体或图片框)的ScaleMode属性值>0,将使容器对象的ScaleLeft 和 ScaleTop 自动设置为0,ScaleHeight 和 ScaleWidth 的度量单位也将发生改变。
(2)用ScaleMode属性只能改变刻度单位,不能改变坐标原点及坐标轴的方向。
(3)四个属性的值可以是正值也可以是负值。
【例8.2】将窗体的坐标系统的原点定义在其中心,X轴的正向向右,Y轴的正向向上,窗体高与宽分别为200和300单位长度。
通过ScaleTop,ScaleLeft,ScaleWidth和ScaleHeight属性实现。
Form1.ScaleLeft = -150
Form1.ScaleTop = 100
Form1.ScaleWidth = 300
Form1.ScaleHeight = -200
3、可以用Scale语句定义新坐标,其格式如下:
[对象.] Scale(X1,Y1)-(X2,Y2)
(X1,Y1) 为对象左上角在新坐标系中的坐标值。(X2,Y2)为对象右下角在新坐标系中的坐标值。
4、大小设置格式如下:
[对象.]Width
[对象.]Height
【例8.3】command1.width+200
Command1.height+100
以上两条语句将使命令按钮在水平方向上增加宽度200,在垂直方向上增加高度100。
8.2 形状控件和直线控件
8.2.1 形状控件Shape
使用Shape控件可在窗体、框架或图片框中创建矩形、正方形、椭圆形、圆形、圆角矩形或圆角正方形等图形。
Shape控件预定义形状是由Shape属性的取值决定的。
图8.1 Shape属性取不同值对应的形状
1.填充方式 ——FillStyle属性
下图是形状控件的FillStyle属性设置为0~8时的填充效果
图8.2
说明:
(1)FillStyle为0是实填充,1为透明方式。填充图案的颜色由FillColor属性来决定。
(2)对于窗体和图片框对象,Fillstyle属性设置后,并不能看到其填充效果,而只能在使用Circle 和 Line 图形方法生成的圆和方框时,在圆和方框中显示其填充效果。
8.2.2 线控件Line
1.BoderStyie属性
该属性用来确定直线的线型,属性值为0—6,分别表示为以下线型:
2.line常用属性
8.3 绘图方法
8.3.1 清屏与画点
1、清屏
格式:[对象.]CLS
作用:清除控件中所有的图形。若省略对象,则表示清除窗体
2、画点
格式:[对象.]Pset[Step](x,y)[,颜色]
作用:在指定的位置上用指定的颜色画一个点。
说明:
1、X、Y是单精度值。缺省时以TWIP为单位。
2、颜色取值为1~16777215。缺省时则将当前使用的FORECOLOR值作为属性
3、每次画完点后,画笔停留的这个位置通常称为当前作图位置。此位置的X坐标会自动存在CURRENTX的属性中,Y坐标会自动放在CURRENT的属性中。
4、一般情况下,X、Y为相对与原点的偏移量。如果选择了STEP,则X、Y时相对于当前作图位置的偏移量。
8.3.2 画直线
1. Line方法
画直线或矩形:
[对象.] Line [ [Step] (x1,y1)]-(x2,y2)[,颜色][,B[F]]
其中:对象可以是窗体或图形框。
(x1,y1) ,(x2,y2)为线段的起终点坐标或矩形的左上角右下坐标。颜色为可选参数,指定画线的颜色,缺省取对象的前景颜色,即ForeColor。
2. 直线的类型
在缺省情况下,直线被画成实线,其宽度为1TWIP,但也可以通过设置DrawStyle 和DrawWidth属性,改变直线的类型和宽度
用以改变直线类型的格式如下:
[对象.] DrawStyle[=线形]
其中,线形有7种。
3. 线宽
直线的宽度实通过DrawWidth属性来设置的,其格式如下:
[对象.] DrawWidth [=线宽]
线宽取值范围为1~32767,其值以像素为单位,缺省时值为1,即一个像素宽。
8.3.3 画矩形
1、画矩形的格式如下:
[对象.] Line [ [Step] (x1,y1)]-(x2,y2)[,颜色],B[F]
说明:
(1)画直线与画矩形的语句差不多,只是将画直线的选择项“B”变成了必选项,而且只能时必选项,否则,画出的矩形图形成为直线
(2)没有选择“F”,则表示画空心矩形,加上“F”,则表示画实心矩形。可以对矩形进行填充。
2、用图形填充的格式如下:
[对象.]FillStyle=图案
8.3.4 画圆
画圆的格式如下:
[对象.] circle[step](x,y),半径 [,颜色]
功能:以X,Y为圆心,用指定的半径、颜色画一个圆
8.3.5 画椭圆
画椭圆的格式如下:
[对象.] circle[step](x,y),半径 [,颜色],,,[纵横比]
说明:
1、画椭圆的格式比画圆的格式多了3个“,”号及“纵横比”参数选项,多3个逗号的原因时因为纵横比是最后一个参数,二前面两个参数可以不要,但逗号必须保留。
2、纵横比指的是纵轴与横轴的点数之比
8.3.6 画弧
1、画弧的格式:
[对象.] circle[step](x,y),半径 [,颜色][起始角,终止角][,纵横比]
2、功能:
从起始角开始到终止角画一条弧线。省掉纵横比或纵横比等于1时,则画的是圆弧,否则画的是椭圆的一部分。
3、说明:
(1)VB中是按逆时针方向画弧的,起始角和终止角都以弧度为单位。
(2)起始角可以正也可以负,若为正,则起始角和终止角都要为正;若为负,则终止角也要为负。为正时仅画一弧线,为负时,则除画弧线外,还画出两个径线为一个扇形。
8.3.7 颜色
在Visual Basic系统中,所有的颜色属性都由一个Long整数表示:
在代码中可使用4种方式给颜色赋值:
使用RGB函数。
使用QBColor函数,选择16种Qbasic颜色中的一种。
使用系统提供的颜色常数。
直接使用Long型颜色值。
1、使用RGB函数
RGB函数可返回一个Long整数,用来表示一个RGB颜色值。其使用格式如下:
RGB(red, green, blue)
说明: red, green, blue(红、绿、蓝)3种颜色,从0~255之间的一个亮度值(0表示亮度最低,而255表示亮度最高)。
例如:
Form1.BackColor = RGB(255, 0, 0) '设定背景为红色
2、函数QBColor
格式:颜色值=QBColor(彩色值)
彩色值为0~15的整数,分别代表16种不同的颜色
3、颜色函数
在VB中有一文本文件CONSTANT.TXT,该文件中定义的常用颜色参数如下:
Global Const Black=&h0&
Global Const Black=&h0&
Global Const green=&hff00&
Global Const yellow=&hffff&
Global Const blue=&hff0000&
Global Const magenta=&hffooff&
Global Const white=&hffffff&
用时,只要把上述常数键入全局模块,以后在需要颜色参数的地方,调用符号常量即可。
4、直接使用颜色值
VB中每种颜色都对应一值,值的范围为0~255,若值用16进制表示,格式如下:
&HBBGGRR
说明:&H 表示16进制的整型数
BB为蓝色的参数
GG为绿色的参数
RR为红色的参数
六、作业 P188 习题8.1-8.7