内容正文:
项目12 Visual Basic图形设计
项目导入
Visual Basic为程序设计者提供了非常丰富的绘图功能。设计程序时,不仅可以使用Visual Basic提供的图形控件来画图还可以调用图形方法绘制丰富多彩的艺术图形。
项目12通过4个任务来学习Shape控件的属性及使用方法;Line 控件的属性及使用方法Visual Basic的常用 绘图方法。
2
项目目标
掌握图形控件的使用。
了解绘制图形的基本方法和技巧。
3
4
任务1 图形设计基础
任务目标
了解Visual Basic 常用坐标系统。
了解Visual Basic颜色的设置。
任务实施
1、坐标系统
坐标对图形绘制与文字输出的操作而言是非常重要的。
坐标系统包括原点位置、坐标单位以及坐标轴的方向等几方面的内容。
在窗体和图片框中绘图时,Visual basic提供的标准坐标系统,还可以使用自定义坐标系统。
5
(1)标准坐标系统
Visual basic坐标系统的默认坐标原点(0,0)在容器对象的左上角,水平方向的X坐标轴向右为正方向,垂直方向的Y坐标向下为正方向,坐标轴的默认刻度单位是缇(Twip)。
除了缇外,Visual basic中坐标的常用度量单位还有点(Point)、厘米和英寸等。用户可以根据实际需要使用ScaleMode属性改变坐标系统的刻度单位。ScaleMode属性的取值如表12-1所示。
6
(1)标准坐标系统
值 常量 描述
0 vbUser 自定义坐标系统
1 vbTwips 默认值,坐标单位为缇
2 vbPoints 坐标单位为点(每英寸为72点)
3 vbPixels 像素(显示器分辨率的最小单位)
4 vbCharacters 字符坐标系统
(水平每个单位为120缇,垂直每个单位为240缇)
5 vbInches 坐标单位为英寸
6 vMillimeters 坐标单位为毫米
7 vbCentimeters 坐标单位为厘米
当ScaleMode值为1~7时,是Visual Basic已定义好的标准坐标系统。
表12-1 ScaleMode 属性的取值
(2)当前坐标
当在容器中绘制图形或输出结果时,经常要将他们定位在某一希望的位置,这就必须获得某一点的坐标,即当前坐标。Visual basic使用current X和current y属性设置或返回当前坐标的水平坐标和垂直坐标。
2、颜色
9
得到颜色的两种方法:
(1)使用RGB函数
可以使用visual Basic 的内部函数RGB返回一个颜色值,此函数有3个参数,取值范围都是0~255,分别表示所要颜色中红(R)、绿(G)、蓝(B)分量的大小。
RGB(0,0,0)返回黑色
RGB(255,0,0)返回红色
RGB(0,0,255)返回蓝色
2、颜色
10
得到颜色的两种方法:
(2)使用QBcolor函数
语法格式:
QBcolor(颜色值)
说明:
“颜色值”的取值范围为0~15,共可表示16种颜色。函数根据参数“颜色值”返回一个表示颜色的长整型数。例如:将背景改成蓝色
Backcolor=QBcolor(1)
11
1、QBcolor函数可设 种颜色,其参数为 到
。
2、若要用RGB函数生成红色,则3个参数分别为:
、 、 。
课堂反馈:
16
0
15
255
0
0
任务2 图形控件
12
任务目标
掌握Shape控件的属性。
掌握Line 控件的属性。
能够运用图形控件绘制简单图形。
任务实施
图形控件用于在对象(窗体、图片框)中绘制特定形状的图形,如圆、矩形、直线等。
图形控件的属性既可以在设计阶段设置,也可以在运行阶段由程序动态地改变。
1、Shape 控件
13
Shape控件用于在窗体或图片框中绘制常见的几何图形。通过设置Shape控件的Shape属性可以画出多种图形。shape 属性具有表12-2所示的几种设置值。
注:Shape控件不支持任何事件,只用于表面装饰。
设置值 形状 设置值 形状
0 默认值,矩形 3 圆形
1 正方形 4 圆角矩形
2 椭圆形 5 圆角正方形
14
【例12.1】 在窗体中使用Shape控件,画出不同形状的图形。
图12-1 程序设计界面
(1)创建用户界面,设置属性。
在窗体中设置1个shape控件 shape1和一个单选按钮Option1控件数组。程序设计界面如图12-1所示。
(2)编写事件代码。
编写窗体form1的load事件代码:
Private Sub form_load()
dim a(5),i
a(0)=”矩形”
a(1)=”正方形”
a(2)=”椭圆形”
a(3)=”圆形”
a(4)=”圆角矩形”
a(5)=”圆角正方形”
option1(0).caption=0 &”:a” &(0)
for i= 1 to 5
option1(i).top=option1(i-1).top+option1(0).height+30
option1(i). caption=i &”:”& a(i)
option1(i).visible=true
next i
end sub
15
(2)编写事件代码。
编写窗体0ption1 单选按钮的click事件代码:
Private Sub Option1_Click(Index As Integer)
Shape1.Shape = Index
End Sub
16
图12-2 用shape控件画出不同形状的图形
程序运行结果如图12-2所示。
2、Line 控件
17
Line控件为用户提供了在容器对象中画直线的方法。简单地改变Line控件的Borderstyle属性即可画出多种线型的直线。表12-3列出了Borderstyle属性的取值。
设置值 形状
0 透明,忽略Border width属性
1 (默认值)实线,边框处于形状边缘的中心
2 虚线,当Border width属性为1时有效
3 点线,当Border width属性为1时有效
4 点画线,当Border width属性为1时有效
5 双点画线,当Border width属性为1时有效
6 内收实线,边框的外边界就是形状的外边缘
18
【例12.2】 设计一个简单的秒表。
图12-3 程序界面
(1)创建用户界面。
在窗体上放1个图片框Picture1,在Picture1中用shape控件 画一个圆,再画4个显示数字的标签,用line控件画一直线line1作为秒针。再在窗体中放置一个定时器控件Timer1和两个命令按钮,如图12-3所示。
19
【例12.2】 设计一个简单的秒表。
(2)设置属性见表12-4。
对象 属性 属性值 说明
Picture1 Pictute 空 图片框的图片属性
Shape1 Shape 3 shape的形状
Line1 BorderStyle 1 直线的宽度
Label1 Capion 0 标签的内容
Label2 Capion 15 标签的内容
Label3 Capion 30 标签的内容
Label4 Capion 45 标签的内容
Command1 Capion 开始 命令按钮的标题
Command2 Capion 暂停 命令按钮的标题
Timer1 Interval 1000 计时器触发间隔
(3)编写事件代码。
编写窗体form1的load事件代码:
Private Sub Form_Load()
Timer1.Enabled = False
Timer1.Interval = 1000
Picture1.Scale (-1, 1)-(1, -1) '自定义图片框的坐标系
Line1.X1 = 0 '设置秒针两端点的坐标,使其指向刻度0
Line1.Y1 = 0
Line1.X2 = 0
Line1.Y2 = 0.7
arph = 0 '初始角度为0
End Sub
20
【例12.2】 设计一个简单的秒表。
(3)编写事件代码。
编写“开始”按钮的click事件代码:
Dim arph '定义秒针转动角度
Private Sub Command1_Click()
Timer1.Enabled = True
End Sub
21
【例12.2】 设计一个简单的秒表。
编写“暂停”按钮的click事件代码:
Private Sub Command2_Click()
Timer1.Enabled = False
End Sub
(3)编写事件代码。
编写计时器Timer1的Timer1事件代码:
Private Sub Timer1_Timer()
arph = arph + 3.14159 / 30
Line1.Y2 = 0.7 * Cos(arph)
Line1.X2 = 0.7 * Sin(arph)
End Sub
22
【例12.2】 设计一个简单的秒表。
运行时,单击【开始】按钮后秒针开始转动,单击【暂停】按钮秒针停止转动,如图12-4所示。
图12-4 用line控件实现的秒针
23
创建 一个应用程序,使用Shape控件在窗体上绘制有不同填充效果的图形。
课堂反馈:
$$