第11章 图形操作
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
11.1.2 颜色
VB提供了多种获得所需颜色的方法,我们这里介绍两 种最常用的方法。 1. 使用RGB函数 RGB函数返回一个Long整数,用来表示一个RGB颜色 值。 语法:RGB(red,green,blue) RGB函数的语法含有以下这些命名参数,如表11-1-2 所示。
表11-1-2 RGB函数的参数 参数 red green blue 描述 必要参数,数值范围从0到255,表示颜色的红色成分 必要参数,数值范围从0到255,表示颜色的绿色成分 必要参数,数值范围从0到255,表示颜色的蓝色成分
11.2.4 用PaintPicture方法显示图片
PaintPicture方法用以在Form、PictureBox或 Printer上绘制图形文件(.bmp、.wmf、.emf、 .cur、.ico或 .dib)的内容。其语法格式如下: [object.]PaintPicture picture, x1, y1[, width1[, height1[, x2[, y2[, width2[,_ height2[, opcode]]]]]]] PaintPicture方法的语法部分说明如表11-3-1所示:
表11-2-1 PaintPicture方法的语法部分说明
部分 object Picture x1, y1 描 述
可选的。一个对象表达式,其值为“应用于”列表中的一个对象。如果省略object, 表示带有焦点的 Form 必需的。要绘制到 object 上的图形源。Form 或 PictureBox 必须有Picture 属性 必需的。均为单精度值,指定在 object 上绘制 picture 的目标坐标(x轴和y轴)。 object 的 ScaleMode 属性决定使用的度量单位 可选的。单精度值,指示 picture 的目标宽度。object 的 ScaleMode 属性决定使用 的度量单位。如果目标宽度比源宽度 (width2) 大或小,将适当地拉伸或压缩 picture。如果该参数省略,则使用源宽度 可选的。 单精度值,指示 picture 的目标高度。object 的 ScaleMode 属性决定使用 的度量单位。如果目标高度比源高度 (height2) 大或小,将适当地拉伸或压缩 picture。如果该参数省略,则使用源高度 可选的。均为单精度值,指示 picture 内剪贴区的坐标(x轴和y轴)。object 的 ScaleMode 属性决定使用的度量单位。如果该参数省略,则缺省为0 可选的。单精度值,指示 picture 内剪贴区的源宽度。object 的 ScaleMode 属性决 定使用的度量单位。如果该参数省略,则使用整个源宽度 可选的。 单精度值,指示 picture 内剪贴区的源高度。object 的 ScaleMode 属性决 定使用的度量单位。如果该参数省略,则使用整个源高度 可选的。是长整型值或仅由位图使用的代码。它用来定义在将 pictur 绘制到 object 上时对 picture 执行的位操作
3. 一些用来调整窗体大小或移动窗体的语句,用缇来表示窗体的 位置和大小。
4. 当创建用来调整窗体大小或移动窗体的代码时,应先检查 Screen 对象的 Height 属性和 Width 属性,以确保窗体在屏幕 上大小合适。 5. 屏幕的左上角总是(0,0)。任何容器的缺省坐标系统,都是 由容器的左上角(0,0)坐标开始。
(3) ScaleWidth,ScaleHeight属性
这两个属性用来自定义设置对象内绘图区域宽度(ScaleWidth属性)和 高度(ScaleHeight属性)。现有的绘图区域将根据这两个属性设置的值, 确定新的单位刻度。其中,ScaleWidth用于设置对象宽度;ScaleHeight 用于设置对象高度。 例如: ScaleWidth=100 ScaleHeight=500
表11-1-3显示一些常见的标准颜色,以及这些颜色的红、 绿、蓝三原色的成分 。 表11-1-3 一些常见的标准颜色值
颜色 黑色 蓝色 红色值 0 0 绿色值 0 0 蓝色值 0 255
绿色
青色 红色 洋红色 黄色 白色
0
0 255 255 255 255
255
255 0 0 255 255
0
255 0 255 0 255
第11章 图形操作
本章要点:
如何定义坐标系统
获取颜色的方法 Line(直线)和Shape(形状)两种绘图控件的
使用
常用绘图方法 常用的窗体和控件的图形属性
11.1 坐标和颜色
11.1.1 坐标系统
Visual Basic的坐标系统是指在屏幕(screen)、窗体 (form)、容器(container)上定义的表示图形对象位置的平面 二维格线,一般采用坐标(x,y)的形式定位。其中,x值是 沿x轴点的位置,最左端是缺省位置0。y值是沿y轴点的位置, 最上端是缺省位置0。 每个容器都有一个坐标系,构成一个坐标系,需要三 个要素:坐标原点、坐标度量单位、坐标轴的长度与方向。 坐标度量单位由容器对象的ScaleMode属性决定。缺省时为 Twip。每英寸1440个Twip,20个Twip为一磅。
通过Form_Click()事件绘制正弦曲线,使用参数方程可方便地确定 坐标点。
程序代码如下: Private Sub Form_click() Dim x As Single, y As Single Cls Scale (-15, 15)-(15, -15) Line (0, 14)-(0, -14) ' 画X轴 Line (14.5, 0)-(-14.5, 0) ' 画Y轴 CurrentX = 0: CurrentY = 0: Print 0 ' 标记坐标原点 CurrentX = 14: CurrentY = 2: Print "X" ' 标记X轴 CurrentX = -15: CurrentY = 0: Print "-15" CurrentX = 13: CurrentY = 0: Print "15" CurrentX = 1: CurrentY = 14: Print "Y" ' 标记Y轴 CurrentX = -2: CurrentY = 14: Print "15" CurrentX = -2: CurrentY = -13: Print "-15" For x = -12 To 12 Step 0.01 '画正弦曲线 y = 10 * Sin(x) PSet (x, y) Next x End Sub
运行结果如图11-2-1所示。
图11-2-1 例11-2运行界面
11.2.2 用Line方法画线和矩形
Line方法用于画直线或矩形,其语法格式如下: [对象.] Line [[Step] (x1,y1)]-(x2,y2) [,颜色] [,B[F]] 其中: (1)对象指示Line在何处产生结果,它可以是窗体或图形框,缺 省时为当前窗口; (2)(x1,y1)为线段的起点坐标或矩形的左上角坐标; (3)(x2,y2)为线段的终点坐标或矩形的右下角坐标; (4)关键字Step表示采用当前作图位置的相对值; (5)关键字B表示画矩形; (6)关键字F表示用画矩形的颜色来填充矩形。缺省F则矩形的填 充由FillColor和FillStyle属性决定。 特别注意,用Line画矩形框,如果不用其他参数,那么B与坐标 (x2,y2)之间应该有两个逗点,一个是紧跟坐标,一个表示Color省 略了。例如: Picture1.Line (500,500) - (1000,1000), ,B
0 ScaleWidth=n ScaleHeight=m Scaleletf=0 ScaleTop=0
X
0
Y
X
ScaleWidth=n ScaleHeight=-m Scaleletf=0 ScaleTop=0
(n,-m)
Y
(n,m)
三、用户自定义系统方法:
方法一:通过ScaleTop,ScaleLeft,ScaleWidth和ScaleHeight属性实现。 【例11-1】 在Form窗体上加载事件Form_Load,并在其中定义窗体的坐标系。 Private Sub Form_load() Show Form1.ScaleLeft = -100 Form1.ScaleTop = 100 Form1.ScaleHeight = -200 Form1.ScaleWidth = 200 Line (-100, 0)-(100, 0) ' 画X轴 Line (0, 100)-(0, -100) ' 画Y轴 CurrentX = 0: CurrentY = 0: Print 0 ' 标记坐标原点 CurrentX = 90: CurrentY = 20: Print "X" ' 标记X轴 CurrentX = -100: CurrentY = 0: Print "-100" CurrentX = 85: CurrentY = 0: Print "100" CurrentX = 5: CurrentY = 95: Print "Y" ' 标记Y轴 CurrentX = -15: CurrentY = 100: Print "100" CurrentX = -15: CurrentY = -85: Print "-100" End Sub
例如: Label1.ForeColor=RGB(255,0,255) ‘设定标签的前景色为洋红色
2. 使用“对象浏览器”中列出的常数 当使用“对象浏览器”中列出的内部常数时,用户不必去了解 这些常数是怎么产生的。而且这些内部常数也不需要声明。表111-4列出了颜色常数。
表11-1-4 颜色常数 常数 vbBlack vbRed vbGreen vbYellow 描述 黑色 红色 绿色 黄色 常数 vbBlue vbMagenta vbCyan vbWhite 描述 蓝色 洋红 青色 白色
二、几个相关的属性
1、ScaleMode属性
用户可用ScaleMode属性设置坐标系统的刻度单位。ScaleMode属性 的取值及含义见表。
说明:
(1)在上述属性值中,除了0和3以外,其他所有模式都 是打印机所打印的单位长度。
(2)当设置容器对象(例如,窗体或图片框)的 ScaleMode 属 性 值 >0 , 将 使 容 器 对 象 的 ScaleLeft 和 ScaleTop 自动设置为0,ScaleHeight 和 ScaleWidth 的度 量单位也将发生改变。 (3)用ScaleMode属性只能改变刻度单位,不能改变坐 标原点及坐标轴的方向。
(2) ScaleTop,ScaleLeft属性
作用:用于控制对象左上角坐标,所有对象的ScaleTop, ScaleLeft属性的缺省值为0,坐标原点在对象的左上角。 = N,表示将X轴向Y轴的负方向平移N个单位
ScaleTop = -N,表示X轴向Y轴的正方向平移N个单位
同样,ScaleLeft的设置值可向左或向右平移坐标系的Y轴。
方法二:采用Scale方法来设置坐标系: [对象.]Scale[(xLeft,yTop)-(xRight,yBottom)]
对象的左上角坐标值 对象的右下角坐标值
(xLeft,yTop)
(xRight,yBotton)
可在程序中使用Scale方法改变坐标系统。当Scale方法不带 参数时,取消用户定义的坐标系,采用缺省坐标系。 如语句: picture1.scale
一、以下规则用于 Visual Basic坐标系统:
1. 当移动控件或调整控件的大小时,使用控件容器的坐标系统。 如果直接在窗体上绘制对象时,窗体就是容器。如果在框架或 图片框里绘制控件时,框架或控件是容器。 2. 所有的图形和 Print 方法,使用容器的坐标系统。例如,那些 在图片框里绘制控件的语句,使用的是图片框的坐标系统。
11.2 绘图方法
11.2.1 用Pset方法画点
在指定对象(如窗体、图形框)上的指定位置处绘制点,还可以 为点指定颜色,语法如下:
[对象名].Pset (X,Y),[Color] X,Y 分别为点的水平与垂直坐标,Color 为点的颜色,是可选项。 例如,设置窗体Form1上(300,400)处为红色,代码实现为: Form1.PSet (300,400), VbRed 【例11-2】 Pset方法示例。
11.2.3 用Circle方法画圆、椭圆、圆弧及Βιβλιοθήκη Baidu形
Circle方法用于画圆、椭圆、圆弧和扇形,其语法格式如下: [对象.] Circle [[Step] (x,y),半径[,颜色][,起始角][,终止角][,长 短轴比率]] 其中: (1)对象指示Circle在何处产生结果,它可以是窗体、图形 框或打印机,缺省时为当前窗口;(x,y)为圆心坐标, 关键字Step表示采用当前作图位置的相对值。 (2)圆弧和扇形通过参数起始角、终止角控制。当起始角、 终止角取值在0~2π时为圆弧,当在起始角、终止角取值前 加一负号时,画出扇形,负号表示画圆心到圆弧的径向线。 (3)椭圆通过长短轴比率控制,默认值为1,画圆。