第 二十 讲
基本课题:简单贺卡设计与绘图操作(一)
授课日期 |
04.11.17 |
04.11.17 |
授课班级 |
03级计算机5、6班 |
03级计算机7、8班 |
教 学 目 的 与 要 求:
本讲的主要目的是通过新年贺卡的设计,学习Visual Basic的图形控件和绘图方法的应用技术。
教 学 的 重 点、难 点:
重点、难点: 图形控件和几种绘图方法
对 教 材 的 处 理 和 意 见:
以教材为主,联系实际情况及时做补充
一. 坐标系统
(一)坐标系统概述
1.构成坐标系的三要素:坐标原点、坐标度量单位、坐标轴的长度与方向。
2.坐标度量单位由容器对象的ScaleMode属性决定
ScaleMode属性设置
属性设置 |
单位 |
0 |
用户定义 |
1 |
Twip(缺省值) |
2 |
磅(point,每英寸72磅,1440Twip,即1磅=20Twip) |
3 |
像素(pixed,与显示器分辨率有关)l厘米=28.3333像素 |
4 |
字符(缺省为高12磅宽为20磅单位) |
5 |
英寸(inch) 1英寸=2.54厘米=0.0254米,即1米=39英寸 |
6 |
毫米(millimeter) |
7 |
厘米(centimeter) |
这七种标准坐标系统的原点都在对象绘图区的左上角,水平坐标的正方向为向右,垂直坐标的正方向为向下。
注意:窗体的Height属性值包括了标题栏和水平边框宽度,同样Width属性值包括了垂直边框宽度。实际可用高度和宽度由ScaleHeight和ScaleWidth属性确定。
(二) 自行定义坐标系
方法一:通过对象的ScaleTop、ScaleLeft、ScaleWidth和ScaleHeight四项属性来实现。
说明:
(1)ScaleTop、ScaleLeft属性分别指定在新坐标系统下对象绘图区左上角的水平和垂直坐标。
(2)ScaleWidth、ScaleHeight属性决定在新的坐标下窗体或图片框绘图区的高度和宽度。当这两个属性取负值时,会改变坐标的正方向。右下角坐标值为(ScaleLeft + ScaleWidth, ScaleTop + ScaleHeight)。
例1 在Form_Click事件中通过属性定义窗体Form1的坐标系。
窗体Form1的左上角坐标为(-200,250),窗体Form1的右下角坐标为(300,-150)。X轴的正向向右,Y轴的正向向上。
方法二:采用Scale方法来设置坐标系。
语法:[对象.]Scale [(xLeft,yTop)-(xRight,yButton)]
说明:
(1)对象:窗体(可省略)、图形框或打印机。
(2)(xLeft,yTop):对象左上角的坐标值。
(3)(xRight,yButton):对象右下角的坐标值。均为单精度数值。
VB根据给定的坐标参数计算出ScaleTop、ScaleLeft、ScaleWidth和ScaleHeight的值:
ScaleLeft= xLeft
ScaleTop= yTop
ScaleWidth= xRight – xLeft
ScaleHeight= yButton – yTop
例如,Form1.Scale(-200,250) – (300,-150)将建立和例1一样的坐标系。
注意:当Scale方法不带参数时,则取消用户自定义的坐标系,而采用缺省坐标系。
例2 用窗体内两个命令按钮的单击事件说明用Scale方法改变坐标系统后产生的影响,命令Line(0,0)-(1000,1000)表示从坐标原点到(1000,1000)画一根直线。
Command2_Click事件定义用户坐标系,坐标原点在窗体的左下角,X轴的正向向右,Y轴的正向向上,窗体的左上角坐标为(0,1000),右下角坐标为(1000,0)。此时,Height=3600,Width=4800,ScaleHeight=-1000,ScaleWidth=1000(Twip)。
当坐标系建立后,控件对象的定位由Left、Top、Width和Height属性确定。
例3 本例说明控件对象在坐标系内的定位。在窗体内放置一个PictureBox控件,它的Picture属性装入一幅图片、两个命令按钮和4个标签。
二. 利用Shape、Line控件绘制基本图形
1. Shape控件
(1)Shape属性
(2)FillStyle属性
(3)BorderStyle属性
2. Line控件
3. VB的颜色系统
(1)在代码中设置颜色的方法
在VB中,一共有下面五种颜色调整方案。
①预定义的颜色常数
我们经常使用的8种颜色,只要用几个单词就可表示出来,这八种颜色是彩虹的六种颜色加上黑色和白色,只要在前缀字符vb后加上相应颜色的英文单词,就可表达出来了(图1)。
假设我们要将窗体的背景设为黑色,只要执行下面的语句就行了:
me.BackColor=vbBlack
就这么简单,这种用法易记好用,但可用颜色太少。
②QBColor函数颜色
在QB中常使用的颜色给带到了VB中。QB颜色主要是和VGA的十六种颜色对应,只有十六种值,它们是0~15,各个值和颜色的对应关系如图2:
所以上面的小例也可写成这样:me.BackColor=QBColor(0)

图1
图2
QBColor(0)→● QBColor(1)→● QBColor(2)→● QBColor(3)→●
QBColor(4)→● QBColor(5)→● QBColor(6)→● QBColor(7)→●
QBColor(8)→● QBColor(9)→● QBColor(10)→● QBColor(11)→●
QBColor(12)→● QBColor(13)→● QBColor(14)→● QBColor(15)→●
③RGB函数颜色值
RGB三个字母,分别代表了Red、Green、Blue三种颜色,此三种色可称为“原色”,在计算机中,通过这三种色的不同组合,可得到各式各样的颜色。每种颜色有256种颜色值,取值范围是0~255,由此我们可以看出此法表示的颜色数目较上面两种方法大有增加,一共能表达256×256×256种颜色。
其中几种常见的颜色用RGB表示如下
黑色:RGB(0,0,0)
红色:RGB(255,0,0)
白色:RGB(255,255,255)
所以上面的小例又可写成:me.BackColor=RGB(0,0,0)
④十六进制数颜色值
顾名思义,就是用十六进制数来表示颜色的方式。在VB窗体或控件的颜色调整中我们就用到过,那一堆以&H开头的东东即是它了。十六进制和RGB值是一一对应的,只要将RGB的各个值换算成两位的十六进制数,一个十六进制的颜色值就出现了。例如上面的黑色的十六进制值为&H0,红色的为&HFF0000,白色的当然就是:&HFFFFFF了。
&H表示该数为十六进制数,BB代表蓝色分量,GG代表绿色分量,RR代表红色分量。它们的值都在00~FF之间。
所以上面的小例又可写成:me.BackColor=&H0
⑤系统调整法
要想调整VB中程序的颜色,当然控制的方法不仅仅在VB中,设置操作系统中相应的项目,也能使我们编辑的应用程序变脸。我们通过“控制面板”中的“显示”,调整其中的“外观”,可设置不同的方案,调整“设置”,可选择本机中使用的颜色总数目。如果选择16色,那我们编程时使用QBColor就足够了,且注意真彩24位的颜色数目为2的24次方,那将是一个很大的数值。
⑥使用颜色时的注意事项
不管使用哪种表示方法,颜色所达到的效果是一致的。
不过颜色有多寡的区分,这和我们使用的机器中“显示”属性密切相关,只有在相适应的颜色系统下,才能使更多的颜色效果显示出来,例如我们在16色有显示状态下,不可能将RGB中所有的颜色表达出来,最多只能表达出十六种颜色,根据这种情况,我们可得出如下的结论:只要我们在真彩24位的系统环境和该环境之下,RGB应该能解决我们想用的一切颜色。
提示:通过窗体的Click事件实现屏幕颜色变换,代码如下:
Private Sub Form_Click()
Form1.BackColor=RGB(Rnd*255,Rnd*255,Rnd*255)
End sub
利用时钟进行控制:
Private Sub Form_Load()
Timer1.Interval = 1000
End Sub
Private Sub Timer1_Timer()
Dim i As Integer
For i = 1 To 1000 step 200
Form1.BackColor = RGB(Rnd * 255, Rnd * 255, Rnd * 255)
Next i
End Sub
2. 使用颜色属性
(1)BackColor 背景色
(2)ForeColor属性
(3)BorderColor属性
(4)FillColor属性
三. 图形方法
1. Pset方法
功能:画点。
语法格式:[对象.]Pset[Step](x,y)[,颜色]
例7-1
2. Point方法
功能:返回指定点的RGB颜色,即返回在 Form 或 PictureBox 上所指定磅的红-绿-蓝 (RGB) 颜色。
语法格式:[对象.]Point(x,y)
mypicture.Point (500,500)‘返回图片框(500,500)位置的颜色值。
3. Line方法
功能:画直线或矩形,语法格式:
[对象.]Line[Step](x1,y1)-[Step](x2,y2)[,颜色][,B[F]]
其中:
对象:窗体或图形框。
(x1,y1):线段的起点坐标或矩形的左上角坐标;若省略,由CurrentX和CurrentY决定。
(x2,y2):线段的终点坐标或矩形的右下角坐标;不可省略。
Step:采用当前作图位置的相对值;
颜色:长整型数,设置直线或矩形的颜色。
B:画矩形;
F:用画矩形的颜色来填充矩形。缺省F则矩形的填充由FillColor和FillStyle属性决定。
4. Circle方法
[<object>.]Circle[Step](x,y),<半径>,[color,start,end,aspect]
说明:
(1)(x,y)指定圆、椭圆或弧的中心坐标。Object的ScaleMode属性决定了使用的度量单位。
(2)<半径>指定圆、椭圆或弧的半径。
(3)color
(4)start、end:指定弧或扇形的起点和终点位置。范围:-2л--2л。起点的缺省值为0,终点的缺省值为2л。正数画弧,负数画扇形。
(5)aspect为垂直半径与水平半径之比,不能为负数。Aspect 〉1时,椭圆沿垂直方向拉长;当aspect <1,椭圆沿水平方向拉长。Aspect的缺省值为1.0,在屏幕上产生一个标准圆(非椭圆)。
(6)可以省略某个参数,但逗号不能省。指定的最后一个参数后面的逗号可以省略。
(7)Circle执行后,CurrentX和CurrentY属性被参数设置为中心点。
例14-5
5. 图形方法与属性设置
例7-4图形方法演示程序
四. 简单贺卡生成器
1. 界面设计
2. 属性设置
3. 编写代码 |