第七章 图形操作

7.1章

7.2章

7.3章

7.4章

7.5章



7.1 坐标系

7.1.1 坐标系统

在VB中,每个对象定位于存放它的容器内,对象定位都要使用容器的坐标系。

VB为对象的定位提供了Left、Top、Width和Height四项属性:

LeftTop属性 对象左上角在容器内的坐标位置。

WidthHeight属性 对象的大小,与容器的度量单位相同。

每个容器都有一个坐标系,容器坐标系的默认设置是:

容器的左上角为坐标原点(0,0),横向向右为X轴的正向,纵向向下为Y轴的正向。坐标度量单位由容器对象的ScaleMode属性决定。缺省时为Twip。每英寸1440个Twip,20个Twip为一磅(Point)。

 

 



7.1.2 自行定义坐标系

1. 重定义坐标原点

属性ScaleTop,ScaleLeft的值用于控制对象左上角坐标,所有对象的ScaleTop,ScaleLeft属性的缺省值为0,坐标原点在对象的左上角。

= N,表示将X轴向Y轴的负方向平移N个单位

ScaleTop

= -N,表示X轴向Y轴的正方向平移N个单位

同样,ScaleLeft的设置值可向左或向右平移坐标系的Y轴。


2. 重定义坐标轴方向和度量单位

属性ScaleWidth,ScaleHeight的值可确定对象坐标系X轴与Y轴的正向及最大坐标值。缺省时其值均大于0,此时,X轴的正向向右,Y轴的正向向下。对象右下角坐标值为(ScaleLeft+ScaleWidth,ScaleTop+ScaleHeight)。

如果ScaleWidth的值小于0,则X轴的正向向左,如果ScaleHeight的值小于0,则Y轴的正向向上。

 



3.利用Scale方法设置坐标系

[对象 .]Scale[(xLeft,yTop)-(xRight,yBottom)]

 



3.利用Scale方法设置坐标系

[对象 .]Scale[(xLeft,yTop)-(xRight,yBottom)]

ScaleLeft=xLeft

ScaleTop=yTop

ScaleWidth=xRight-xLeft

ScaleHeight=yBottem-yTop

Scale不带参数,则取消用户自定义的坐标系,而采用缺省坐标系。

 



7.2 绘图属性

7.2.1 当前坐标

窗体或图形框或打印机的CurrentX,CurrentY属性给出这些对象在绘图时的当前坐标。这两个属性在设计阶段不能使用。

 

 

窗体、图形框或打印机的DrawWidth属性给出这些对象上所画线的宽度或点的大小。DrawWidth属性以像素为单位来度量,最小值为1。


7.2.3线型

DrawStyle属性给出在窗体、图形框或打印机上所画线的形状。


7.2.4 填充

封闭图形的填充方式由FillStyle,FillColor这两个属性决定。


7.2.5 色彩

RGB(红,绿,蓝)函数通过红、绿、蓝三基色混合产生某种颜色。

QBColor(颜色码)函数采用QuickBasic所使用的16种颜色。

 



7.3 图形控件

7.3.1 PictureBox(图形框)

PictureBox控件的作用是:

1.为用户显示图片.

Picture属性决定实际显示图片。在程序运行时可以使用:

对象.Picture = LoadPicture(图形文件)

 

 

从图形框中删除一个图形,可用LoadPicture(" "),

PictureBox控件不能伸展图像以适应控件尺寸,但可以用Autosize属性调整图形框大小以适应图像。

2.用作其它控件的容器。

可以在PictureBox控件上面加上其它控件。这些控件随PictureBox移动而移动,而控件在PictureBox控件中的相对位置保持不变。


7.3.2 Image(图像框)

使用图像框的步骤与图形框相同。但是图像框比图形框占用更少的内存,描绘得更快。与图形框不同的是图像框内不能保存其他控件。在图像框中可以利用Stretch属性来拉伸位图和图标,使其适应图像框的大小。

 



7.3.3 Line(画线工具)

7.3.4 Shape(形状)

 

Shape控件可以用来画矩形、正方形、椭圆、圆、圆角矩形及圆角正方形。Shape属性,确定所需要的形状。

 



7.4 图形方法

 

7.4.1 Line方法

 

Line方法用于画直线或矩形,其语法格式如下:
[对象.] Line [ [Step] (x1,y1)]-(x2,y2)[,颜色][,B[F]]
(x1,y1)为线段的起点坐标或矩形的左上角坐标,(x2,y2)为线段的终点坐标或矩形的右下角坐标;
关键字Step表示采用当前作图位置的相对值;
关键字B表示画矩形,关键字F表示用画矩形的颜色来填充矩形。

 



7.4.2 Circle方法

Circle方法用于在指定对象上画圆、椭圆、圆弧和扇形。其语法格式:

[对象.] Circle [ [Step] (x,y),半径[,颜色][,起始角][,终止角][,长短轴比率]]]

其中: (x,y)为圆心坐标,关键字Step表示采用当前作图位置的相对值;

圆弧和扇形通过参数起始角,终止角控制。当起始角、终止角取值在0 —2p 时为圆弧,当在起始角、终止角取值前加一负号时,画出扇形,负号表示画圆心到圆弧的径向线;

椭圆通过长短轴比率控制,默认值为1,画圆。

 



7.4.3 Pset方法

Pset方法用于画点,其语法格式如下:

[对象.] Pset [Step] (x,y) [,颜色]

参数(x,y)为所画点的坐标,关键字Step表示采用当前作图位置的相对值。

采用背景颜色可清除某个位置上的点。利用Pset方法可画任意曲线

 



7.5 应用

7.5.1 几何图形绘制

利用Line方法和Circle方法及DrawWidth、DrawStyle和DrawMode属性绘制几何图形。

 



7.5.2 使用DrawMode属性绘制图形

控件的DrawMode属性可以将新象素与原有象素用AND、OR、NOT、XOR之类的逻辑运算组合。DrawMode属性中一个最实用的设置为7。新象素用XOR运算符与原有象素组合,如果以XOR方式画线,则会看到一条与现有象素叠加的直线,如果在其上再画一条线,则直线消失,恢复原有象素。XOR绘图方式最常见的例子是绘制鼠标拖曳时的虚线框。要在应用程序中实现动态虚线框,必须使用3个鼠标事件:

MouseDown 、 MouseMove 、 MouseUp

MouseDown事件指出虚线框起点,这个点的坐标要存放在两个窗体级的变量(x1,y1)中。移动鼠标产生MouseMove事件,在绘制新的线框前,必须擦除画面上原有的线框。原有线框右下角的坐标也要保存在两个窗体级的变量(x2,y2)中,新线框右下角的坐标为鼠标指针的当前位置(x,Y)。当新线框绘制完成后,(x2,y2)必须重设置为(x,y)的值。