《VB程序设计第3版第11章课件》由会员分享,可在线阅读,更多相关《VB程序设计第3版第11章课件(94页珍藏版)》请在金锄头文库上搜索。
1、第第十十一一章章 图图形形设设计计图图 形形 设设 计计本章要点本章要点: :图形设计基础图形设计基础图形控件图形控件绘图方法绘图方法与绘图有关的常用属性、事件和方法与绘图有关的常用属性、事件和方法保存绘图结果保存绘图结果第第1111章章1VB程序设计第3版第11章第第十十一一章章 图图形形设设计计11.1 图形设计基础图形设计基础11.1.1 坐标系统坐标系统x x轴轴y y轴轴(0,0)(0,0)缺省坐标系统缺省坐标系统: : 2VB程序设计第3版第11章第第十十一一章章 图图形形设设计计1. 刻度单位:刻度单位:缺省刻度单位缺省刻度单位: 缇缇(Twip) 改变刻度单位改变刻度单位: 对
2、象名对象名.ScaleMode = 属性值属性值值值常量常量说明说明0vbUser用户自定义。可设置用户自定义。可设置ScaleHeight、ScaleWidth、ScaleTop、ScaleLeft属性属性1vbTwips缇(缺省值),缇(缺省值),1440缇等于一英寸缇等于一英寸2vbPoints点,点,72点等于一英寸点等于一英寸3vbPixels像素,表示分辩率的最小单位像素,表示分辩率的最小单位4vbCharacters字符字符5vbInches英寸英寸6vbMillimeters毫米毫米7vbCentimeters厘米厘米例如:例如:Form1.ScaleMode=33VB程序设计
3、第3版第11章第第十十一一章章 图图形形设设计计2. 改变坐标系改变坐标系 1) ScaleLeft、ScaleTop属性属性 重定义对象的左上角坐标,改变坐标系的原点重定义对象的左上角坐标,改变坐标系的原点位置。位置。【例【例11-1】使用缺省的坐标系统:使用缺省的坐标系统:Private Sub Command1_Click() Label1.Left = 0 Label1.Top = 0End Sub (0,0)Label1Command14VB程序设计第3版第11章第第十十一一章章 图图形形设设计计使用自定义的坐标系统:使用自定义的坐标系统:Private Sub Command1_C
4、lick() Form1.ScaleLeft = 200 Form1.ScaleTop = 300 Label1.Left = 0 Label1.Top = 0End Sub (200,300)5VB程序设计第3版第11章第第十十一一章章 图图形形设设计计2) ScaleWidth和和ScaleHeight属性属性 表示容器对象的内部宽度与高度。表示容器对象的内部宽度与高度。 用于自定义一个刻度单位。用于自定义一个刻度单位。例例:使用使用ScaleWidth和和ScaleHeight改变窗体刻度单位改变窗体刻度单位 设窗体高度是设窗体高度是2000Twips,宽度是宽度是3000Twips。
5、此时水平和垂直刻度单位均为此时水平和垂直刻度单位均为1Twips。 如果设置如果设置: ScaleHeight=500 则将窗体的高度划分为则将窗体的高度划分为500个单位个单位, 每个单位为每个单位为2000/500,即,即4Twips 如果设置如果设置: ScaleWidth=1000 则将窗体的宽度划分为则将窗体的宽度划分为1000个单位,个单位, 每个单位为每个单位为3000/1000,即,即3Twips 6VB程序设计第3版第11章第第十十一一章章 图图形形设设计计在使用以上方法定义了新的刻度单位后,如果在使用以上方法定义了新的刻度单位后,如果容器对象的实际尺寸发生变化,这一刻度也不
6、容器对象的实际尺寸发生变化,这一刻度也不会改变。会改变。设置设置ScaleWidth和和ScaleHeight属性为负数,将属性为负数,将反转坐标轴的方向。反转坐标轴的方向。将将 ScaleHeight、ScaleWidth、ScaleLeft 与与 ScaleTop 属性设置为任何值都自动将属性设置为任何值都自动将 ScaleMode 设置为设置为 0。7VB程序设计第3版第11章第第十十一一章章 图图形形设设计计【例【例11-2】将一个图形】将一个图形(Shape1)的左上角移动到窗的左上角移动到窗体的中央位置。体的中央位置。Private Sub Command1_Click() For
7、m1.ScaleHeight = 2 Form1.ScaleWidth = 2 Shape1.Left = 1 Shape1.Top = 1End Sub(1,1)(0,0)8VB程序设计第3版第11章第第十十一一章章 图图形形设设计计【例【例11-3】定义窗体的左下角为原点】定义窗体的左下角为原点(0,0),y坐标坐标轴正方向向上。轴正方向向上。Private Sub Form_Load()ScaleHeight = -4ScaleWidth = 4ScaleTop = 4End Sub Private Sub Command1_Click()Shape1.Left = 1Shape1.To
8、p = 1End Sub(0,0)(1,1)9VB程序设计第3版第11章第第十十一一章章 图图形形设设计计例:定义窗体的中央位置为原点例:定义窗体的中央位置为原点(0,0),y坐标轴坐标轴正方向向上。正方向向上。Private Sub Form_Load() ScaleHeight = -4 ScaleWidth = 4 ScaleTop = 2 ScaleLeft = -2End SubPrivate Sub Command1_Click() Shape1.Left = 1 Shape1.Top = 1End Sub(0,0)(1,1)10VB程序设计第3版第11章第第十十一一章章 图图形形
9、设设计计3) Scale方法方法Scale方法用于将容器对象的左上角坐标定义为方法用于将容器对象的左上角坐标定义为(x1,y1),右下角坐标定义为右下角坐标定义为(x2,y2)。不带任何参数调用不带任何参数调用Scale方法,可以将坐标系还方法,可以将坐标系还原成系统缺省的坐标系。原成系统缺省的坐标系。 格式格式: 对象名对象名.Scale (x1,y1)-(x2,y2)其中:其中:x1,y1: 决定了决定了ScaleLeft和和ScaleTop属性的值;属性的值;(x1,y1)与与(x2,y2)两点两点x坐标的差值和坐标的差值和y坐标的差坐标的差值分别决定了值分别决定了ScaleWidth和
10、和ScaleHeight属性的值。属性的值。使用使用Scale方法设置各种容器对象的坐标系统,更方法设置各种容器对象的坐标系统,更直观、更快捷。直观、更快捷。11VB程序设计第3版第11章第第十十一一章章 图图形形设设计计例:在图片框例:在图片框Picture1中打印中打印5行行5列的单位矩阵。列的单位矩阵。 Private Sub Picture1_Click() Dim a(5, 5) As Integer Picture1.Scale (0, 0)-(6, 6) For i = 1 To 5 Picture1.CurrentY = i For j = 1 To 5 If i = j Th
11、en a(i, j) = 1 Else a(i, j) = 0 Picture1.CurrentX = j Picture1.Print a(i, j); Next j,i End Sub12VB程序设计第3版第11章第第十十一一章章 图图形形设设计计3. 当前坐标当前坐标CurrentX属性属性: 设置或返回的当前坐标的水平坐标设置或返回的当前坐标的水平坐标CurrentY属性属性: 设置或返回的当前坐标的垂直坐标设置或返回的当前坐标的垂直坐标例如例如: 在点在点(200,200)处显示处显示“当前坐标为当前坐标为(200,200)” Form1.CurrentX = 200 Form1.C
12、urrentY = 200 Form1.Print 当前坐标为当前坐标为(200,200)13VB程序设计第3版第11章第第十十一一章章 图图形形设设计计4. 与位置和大小有关的属性与位置和大小有关的属性(Left,Top)Width(ScaleLeft,ScaleTop)HeightScaleHeightScaleWidth14VB程序设计第3版第11章第第十十一一章章 图图形形设设计计颜色值颜色值: 四字节、长整型。四字节、长整型。 最低的三个字节最低的三个字节: 红色、绿色、蓝色。红色、绿色、蓝色。 每个字节取值每个字节取值: 00FF(或或0255)1. 在设计阶段设置颜色在设计阶段设
13、置颜色11.1.2 颜色颜色 系统颜色系统颜色调色板调色板15VB程序设计第3版第11章第第十十一一章章 图图形形设设计计2. 在运行阶段设置颜色在运行阶段设置颜色1) RGB函数函数 格式:格式:RGB(red,green,blue) 例例: Form1.BackColor = RGB(255,0,0) 设置窗体的背景色为红色设置窗体的背景色为红色2) QBColor函数函数 格式:格式: QBColor(value) value: 07、815(为为07颜色加亮颜色加亮) 0黑色黑色 1蓝色蓝色 2绿色绿色 3青色青色4红色红色 5紫红色紫红色 6黄色黄色 7浅灰色浅灰色 例例: Form
14、1.BackColor = QBColor(4)16VB程序设计第3版第11章第第十十一一章章 图图形形设设计计3)使用颜色常量)使用颜色常量vbBlack黑色黑色vbRed红色红色vbGreen绿色绿色vbYellow黄色黄色vbBlue蓝色蓝色vbMagenta 洋红色洋红色vbCyan青色青色vbWhite白色白色4)使用颜色的十六进制值)使用颜色的十六进制值 &H00BBGGRR&5)使用系统颜色)使用系统颜色 例例: vbScrollBars &H80000000 滚动条颜色滚动条颜色 vbDesktop &H80000001 桌面颜色桌面颜色 17VB程序设计第3版第11章第第十十
15、一一章章 图图形形设设计计 图形控件用于在对象(窗体、图片框)上绘制图形控件用于在对象(窗体、图片框)上绘制特定形状的图形,如圆、直线等。图形控件的属特定形状的图形,如圆、直线等。图形控件的属性,既可以在设计阶段设置,也可以在运行阶段性,既可以在设计阶段设置,也可以在运行阶段由程序动态的改变。由程序动态的改变。11.2 图形控件图形控件Shape控件控件Line控件控件18VB程序设计第3版第11章第第十十一一章章 图图形形设设计计1. 属性属性 Shape(见见P228表表11-4)BorderStyleBorderColorBorderWidthBackStyle BackColor Fi
16、llStyleFillColor11.2.1 Shape控件控件19VB程序设计第3版第11章第第十十一一章章 图图形形设设计计BackColorShapeFillStyleFillColor例如例如: 20VB程序设计第3版第11章第第十十一一章章 图图形形设设计计例:在窗体中使用例:在窗体中使用Shape控件,画六个不同形状的控件,画六个不同形状的图形。图形。 Private Sub Form_Click() Shape1.Shape = vbShapeRectangle Shape2.Shape = vbShapeSquare Shape3.Shape = vbShapeOval Sha
17、pe4.Shape = vbShapeCircle Shape5.Shape = vbShapeRoundedRectangle Shape6.Shape = vbShapeRoundedSquareEnd Sub21VB程序设计第3版第11章第第十十一一章章 图图形形设设计计2. Move方法方法 对象名对象名.Move left, top, width, height例:在窗体上移动一正方形,每次移动时使例:在窗体上移动一正方形,每次移动时使正方形的长和宽增加正方形的长和宽增加100缇。缇。Private Sub Command1_Click() Shape1.Move Shape1.Le
18、ft + 100, Shape1.Top + 100, _ Shape1.Width + 100, _ Shape1.Height + 100End Sub22VB程序设计第3版第11章第第十十一一章章 图图形形设设计计1. 作用作用 设计时在窗体上绘制直线。设计时在窗体上绘制直线。2. 属性属性BorderStyle(见见P229表表11-5)BorderWidthX1、X2、Y1 、Y2 11.2.2 Line控件控件注意注意: 运行时可以通过改变运行时可以通过改变 X1、X2、Y1 和和 Y2属性来移动它或者调整它的大小。而属性来移动它或者调整它的大小。而不能使用不能使用Move方法方法
19、23VB程序设计第3版第11章第第十十一一章章 图图形形设设计计当当BorderStyle属属性性为为“0”(透透明明)时时,将将忽忽略略BorderColor和和BorderWidth属属性的设置值。性的设置值。 当当BorderWidth为为1时时,BorderStyle属属性性设设置置为为1(实实线线)和和6(内内收收实实线线)看看上去效果相同。上去效果相同。BorderStyle属性属性实线实线内收实线内收实线24VB程序设计第3版第11章第第十十一一章章 图图形形设设计计【例【例11-4】设计一个简单的秒表。运行时,设计一个简单的秒表。运行时,单击单击“开始开始”按钮开始移动秒针,单
20、击按钮开始移动秒针,单击“停止停止”按钮停止移动。按钮停止移动。Picture1Shape1Line1Command2Command1Timer125VB程序设计第3版第11章第第十十一一章章 图图形形设设计计Dim arph 秒针旋转角度秒针旋转角度Private Sub Form_Load() Timer1.Enabled = False 关闭定时器关闭定时器 Timer1.Interval = 1000 设定时时间为设定时时间为1秒秒 Picture1.Scale (-1, 1)-(1, -1) 定义图片框坐标系定义图片框坐标系 Line1.X1 = 0 Line1.Y1 = 0 将秒针
21、的起点移动到原点将秒针的起点移动到原点 Line1.X2 = 0 Line1.Y2 = 0.7 将秒针的另一端移动到正上方将秒针的另一端移动到正上方,指向指向0 arph = 0 旋转角度为旋转角度为0End Sub代码如下:代码如下:26VB程序设计第3版第11章第第十十一一章章 图图形形设设计计Private Sub Command1_Click() Timer1.Enabled = True 启动定时器启动定时器End SubPrivate Sub Command2_Click() Timer1.Enabled = False 关闭定时器关闭定时器End Sub27VB程序设计第3版第1
22、1章第第十十一一章章 图图形形设设计计11.3 绘图方法绘图方法11.3.1 画点方法画点方法(Pset)格式格式: 对象名对象名.PSet Step (x, y) ,颜色颜色功能功能: 在对象指定位置,用指定的颜色画点在对象指定位置,用指定的颜色画点说明说明: 对象名对象名:窗体、图片框、缺省为当前窗体。:窗体、图片框、缺省为当前窗体。Step :指定相对于由:指定相对于由 CurrentX 和和 CurrentY 属性提供的当前位置的坐标。属性提供的当前位置的坐标。 (x, y) :点的水平和垂直坐标。:点的水平和垂直坐标。 颜色颜色绘制该点的绘制该点的 RGB 颜色。省略时使颜色。省略时
23、使用用“对象名对象名” 的的 ForeColor属性值。属性值。28VB程序设计第3版第11章第第十十一一章章 图图形形设设计计【例【例11-5】在窗体上随机画一些带颜色的点,在窗体上随机画一些带颜色的点,实现满天星的效果。实现满天星的效果。 如下图。如下图。29VB程序设计第3版第11章第第十十一一章章 图图形形设设计计Private Sub Form_Click() ScaleWidth = 100 设窗体宽度为设窗体宽度为100个单位个单位 ScaleHeight = 100 设窗体高度为设窗体高度为100个单位个单位 DrawWidth = 20 设置点的大小为设置点的大小为20个像素
24、个像素 生成随机点的坐标(生成随机点的坐标(m_x,m_y) m_x = Rnd * 100 : m_y = Rnd * 100 生成随机的红、绿、篮颜色分量值生成随机的红、绿、篮颜色分量值 m_red = Rnd * 255 m_green = Rnd * 255 m_blue = Rnd * 255 用随机坐标和随机颜色画点用随机坐标和随机颜色画点 PSet(m_x, m_y),RGB(m_red,m_green, m_blue)End Sub代码如下:代码如下:30VB程序设计第3版第11章第第十十一一章章 图图形形设设计计【例【例11-6】用用PSet方法在窗体上绘制一条方法在窗体上绘
25、制一条00,3600的正弦曲线。的正弦曲线。分析:分析:由于要绘制的曲线在由于要绘制的曲线在00,3600之间,因此之间,因此可以定义窗体的水平坐标从左到右为可以定义窗体的水平坐标从左到右为0到到360;由;由于正弦函数的取值范围为于正弦函数的取值范围为-1,1,因此可以设置垂,因此可以设置垂直坐标从下到上为直坐标从下到上为-1到到1。0360-1+131VB程序设计第3版第11章第第十十一一章章 图图形形设设计计代码如下:代码如下:Private Sub Form_Click() DrawWidth = 2 Scale (0, 1)-(360, -1) For x = 0 To 360 y
26、= Sin(x * 3.1415926 / 180) PSet (x, y), vbRed Next xEnd Sub32VB程序设计第3版第11章第第十十一一章章 图图形形设设计计【例【例11-7】用用PSet方法在窗体上绘制一条如方法在窗体上绘制一条如下图所示的星形曲线下图所示的星形曲线,曲线由以下参数方程曲线由以下参数方程决定决定: x=sin2t*cost y=sin2t*sint其中其中t的取值范围为的取值范围为0t2分析:分析:由于正弦函数和余弦函数的取值范围由于正弦函数和余弦函数的取值范围为为 -1,1,根据以上方程可以确定,根据以上方程可以确定x、y的取的取值范围在值范围在-1
27、到到1之间,因此可以使用之间,因此可以使用Scale方方法定义坐标系:法定义坐标系:Scale (-1, -1)-(1, 1)。33VB程序设计第3版第11章第第十十一一章章 图图形形设设计计Private Sub Form_Click() Scale (-1, 1)-(1, -1) DrawWidth = 2 ForeColor = vbRed For t = 0 To 2 * 3.1415926 Step 0.001 x = Sin(2 * t) * Cos(t) y = Sin(2 * t) * Sin(t) PSet (x, y) Next tEnd Sub代码如下:代码如下:34VB
28、程序设计第3版第11章第第十十一一章章 图图形形设设计计运行效果:运行效果:35VB程序设计第3版第11章第第十十一一章章 图图形形设设计计格式格式: 对象名对象名.Line Step(x1, y1)Step(x2, y2) ,颜色颜色 ,BF功能功能: 在指定两点之间用指定颜色画线或矩在指定两点之间用指定颜色画线或矩形形说明说明: 对象名:对象名:窗体、图片框,缺省为当前窗体窗体、图片框,缺省为当前窗体Step:可选的,指定相对于由:可选的,指定相对于由 CurrentX 和和 CurrentY属性提供的当前位置的坐标。属性提供的当前位置的坐标。 11.3.2 画直线、矩形方法画直线、矩形方
29、法(Line)36VB程序设计第3版第11章第第十十一一章章 图图形形设设计计Step:可选的,指定相对于由:可选的,指定相对于由 CurrentX 和和 CurrentY属性提供的当前位置的坐标。属性提供的当前位置的坐标。 (x1, y1):直线或矩形的起点坐标。如果省:直线或矩形的起点坐标。如果省略,线起始于由略,线起始于由 CurrentX 和和 CurrentY 指指示的位置。示的位置。Step:指定相对于起点的终点坐标。:指定相对于起点的终点坐标。 (x2, y2):直线或矩形的终点坐标。:直线或矩形的终点坐标。 颜色:颜色:画线时用的画线时用的 RGB 颜色。颜色。B:利用对角坐标
30、画出矩形。:利用对角坐标画出矩形。 F:规定矩形以矩形边框的颜色填充。:规定矩形以矩形边框的颜色填充。37VB程序设计第3版第11章第第十十一一章章 图图形形设设计计例:给星形曲线绘制坐标线。例:给星形曲线绘制坐标线。38VB程序设计第3版第11章第第十十一一章章 图图形形设设计计Private Sub Form_Click() Scale (-1, 1)-(1, -1) :DrawWidth = 3 Line (-1, 0)-(1, 0), vbBlue Line (0, 1)-(0, -1), vbBlue DrawWidth = 1 For i = -1 To 1 Step 0.1 Li
31、ne (i, 0.05)-(i, 0) 画垂直刻度画垂直刻度 Next i DrawWidth = 2 ForeColor = vbRed For t = 0 To 2 * 3.1415926 Step 0.001 x=Sin(2 * t) * Cos(t) : y = Sin(2 * t) * Sin(t) PSet (x, y) Next tEnd Sub39VB程序设计第3版第11章第第十十一一章章 图图形形设设计计【例【例11-8】单击窗体在窗体上绘制直线、矩形。】单击窗体在窗体上绘制直线、矩形。Private Sub Form_Click() ScaleWidth = 100 Sca
32、leHeight = 100 DrawWidth = 5 画三角形画三角形 Line (10, 30)-(10, 80), vbRed Line -(30, 80), vbGreen Line -(10, 30), vbBlue 画矩形画矩形 CurrentX = 40: CurrentY = 30 Line -(60, 80), vbRed, B 画实心矩形画实心矩形 CurrentX = 70: CurrentY = 30 Line -Step(20, 50), vbMagenta, BFEnd Sub40VB程序设计第3版第11章第第十十一一章章 图图形形设设计计【例【例11-9】使用使
33、用Line方法绘制矩形的功能画方法绘制矩形的功能画一个黑白格相间的棋盘。如下图所示。一个黑白格相间的棋盘。如下图所示。 41VB程序设计第3版第11章第第十十一一章章 图图形形设设计计 假假设设棋棋盘盘有有10行行10列列,因因此此可可以以首首先先用用Scale方方法法将将窗窗体体的的高高度度和和宽宽度度划划分分成成10个个单位。单位。 为为了了实实现现黑黑白白相相间间的的效效果果,在在代代码码中中引引入入一一个个标标志志变变量量Flag,当当Flag为为1时时,用用黑黑色画矩形,当色画矩形,当Flag为为-1时,用白色画矩形。时,用白色画矩形。 在在Line方方法法中中使使用用BF参参数数指
34、指定定绘绘制制填填充充矩形。矩形。分析:分析:42VB程序设计第3版第11章第第十十一一章章 图图形形设设计计Private Sub Form_Click() 定义窗体宽度和高度为定义窗体宽度和高度为10个单位个单位 Scale (0, 0)-(10, 10) Flag = 1 For i = 0 To 9 Flag = Flag * (-1) For j = 0 To 9 设置小矩形的左上角坐标设置小矩形的左上角坐标 X1 = i: Y1 = j 设置小矩形的右下角坐标设置小矩形的右下角坐标 X2 = i + 1: Y2 = j + 1 代码如下:代码如下:43VB程序设计第3版第11章第第
35、十十一一章章 图图形形设设计计 根据根据Flag的值设置画图颜色的值设置画图颜色 If Flag = -1 Then C = vbWhite Else C = vbBlack End If Line (X1, Y1)-(X2, Y2), C, BF 画矩形画矩形 Flag = Flag * (-1) Next j Next iEnd Sub44VB程序设计第3版第11章第第十十一一章章 图图形形设设计计【例例11-10】使使用用Line方方法法绘绘制制艺艺术术图图案案。使使画画线线的的起起始始坐坐标标(x1,y1)和和终终点点坐坐标标(x2,y2)根根据据三三角角函函数数表表达达式式的的规规律
36、律变变化化,可以绘制各种风格的图形。可以绘制各种风格的图形。 设坐标(设坐标(x1,y1)、()、(x2,y2)随表达式随表达式 x1=320+fcos(a) y1=200-fsin(a) x2=320+fcos(a+/5) y2=200-fsin(a+/9)的规律变化,其中,的规律变化,其中,f由表达式由表达式 f=d(1+1/2cos(2.5a)决定,决定,d是个常量。设是个常量。设d=100,a在在0到到4间间45VB程序设计第3版第11章第第十十一一章章 图图形形设设计计分析:分析:由于由于cos函数值在函数值在-1到到1之间,根据以之间,根据以上表达式可以看出,上表达式可以看出,f的
37、值在的值在50到到150之间。之间。根据根据f的取值范围和的取值范围和sin、cos函数的取值范函数的取值范围可以推导出围可以推导出x坐标值在坐标值在170470之间,之间,y坐标的值在坐标的值在50350之间。据此,可以用之间。据此,可以用scale方法定义图片框的刻度单位,其宽度方法定义图片框的刻度单位,其宽度和高度应大于或等于和高度应大于或等于x和和y的取值范围,以的取值范围,以保证所画的线条落在图片框内。保证所画的线条落在图片框内。46VB程序设计第3版第11章第第十十一一章章 图图形形设设计计设计界面:设计界面:Picture147VB程序设计第3版第11章第第十十一一章章 图图形形
38、设设计计Private Sub Picture1_Click() Const pi = 3.14159265, d = 100 Dim a As Single, f As Single Dim x1 As Integer, y1 As Integer Dim x2 As Integer, y2 As Integer Picture1.Scale (170, 50)-(470, 350) For a = 0 To 4 * pi Step pi / 100 f = d * (1 + 1 / 2 * Cos(2.5 * a) x1 = 320 + f * Cos(a) y1 = 200 - f *
39、Sin(a) x2 = 320 + f * Cos(a + pi / 5) y2 = 200 - f * Sin(a + pi / 9) Picture1.Line (x1, y1)-(x2, y2), vbBlue Next aEnd Sub代码如下:代码如下:48VB程序设计第3版第11章第第十十一一章章 图图形形设设计计运行效果:运行效果:49VB程序设计第3版第11章第第十十一一章章 图图形形设设计计【例例11-11】用用Line方法绘制坐标轴,用方法绘制坐标轴,用Pset方法绘制抛物线。抛物线的数学方程式为:方法绘制抛物线。抛物线的数学方程式为:y=ax2+bx+c,其中,其中a,b
40、,c为常数。输入常数为常数。输入常数a,b,c的值,画出相应的抛物线。的值,画出相应的抛物线。设计界面:设计界面:Text1Text2Text3Command1Picture150VB程序设计第3版第11章第第十十一一章章 图图形形设设计计代码如下:代码如下:Private Sub Command1_Click() Dim x As Single, a As Single, b As Single, _ c As Single Picture1.ScaleMode = 3 重新设置坐标系,原点在重新设置坐标系,原点在Picture1的中心的中心 Picture1.Scale (-20, 20)
41、-(20, -20) Picture1.Cls 用用Line方法绘制方法绘制X轴轴 Picture1.Line (-20, 0)-(20, 0), vbBlue Picture1.Line (18, 1)-(20, 0), vbBlue Picture1.Line -(18, -1), vbBlue Picture1.Print X51VB程序设计第3版第11章第第十十一一章章 图图形形设设计计 用用Line方法绘制方法绘制Y轴轴 Picture1.Line (0, 20)-(0, -20), vbBlue Picture1.Line (-1, 18)-(0, 20), vbBlue Pict
42、ure1.Line -(1, 18), vbBlue Picture1.Print Y 显示原点显示原点 Picture1.CurrentX = 1 Picture1.CurrentY = -1 Picture1.Print 0 取方程系数取方程系数 a = Val(Text1.Text) b = Val(Text2.Text) c = Val(Text3.Text) 52VB程序设计第3版第11章第第十十一一章章 图图形形设设计计 用用Pset方法绘制方法绘制x在在-10到到10之间的抛物线之间的抛物线 设在设在x每隔每隔0.005时画一个点时画一个点 For x = -10 To 10 S
43、tep 0.005 Picture1.PSet (x, a * x 2 + b * x + c), vbRed NextEnd Sub运行界面:运行界面:53VB程序设计第3版第11章第第十十一一章章 图图形形设设计计格式格式: 对象名对象名.Circle Step(x, y), 半径半径, 颜色颜色, 起始角起始角, 终止角终止角 , 纵横纵横比比功能:在对象上画圆、椭圆或弧。功能:在对象上画圆、椭圆或弧。说明:说明:对象名对象名:窗体、图片框。缺省为当前窗体:窗体、图片框。缺省为当前窗体 Step:指定圆、椭圆或弧的中心相对坐标:指定圆、椭圆或弧的中心相对坐标 (x, y):圆、椭圆或弧的
44、中心坐标:圆、椭圆或弧的中心坐标半径半径 :圆、椭圆或弧的半径。为最长轴的:圆、椭圆或弧的半径。为最长轴的尺寸尺寸颜色:颜色:圆的轮廓颜色。默认为圆的轮廓颜色。默认为 ForeColor11.3.3 画圆方法画圆方法(Circle)54VB程序设计第3版第11章第第十十一一章章 图图形形设设计计起始角起始角, 终止角终止角:范围:范围 -2 , 2 。指。指定弧或扇形的起点和终点位置。起点的定弧或扇形的起点和终点位置。起点的缺省值是缺省值是0; 终点的缺省值是终点的缺省值是2 。若为。若为负负,在画弧的同时画圆心到弧端点的连线。在画弧的同时画圆心到弧端点的连线。 纵横比:纵横比:圆的纵横尺寸比
45、。缺省值为圆的纵横尺寸比。缺省值为 1.0(标准圆标准圆) 注意:注意:Circle 方法总是沿逆时针方向绘图。方法总是沿逆时针方向绘图。55VB程序设计第3版第11章第第十十一一章章 图图形形设设计计 Const pi = 3.14159265 ScaleWidth = 100 ScaleHeight = 100 Circle (30, 30), 10 Circle (70, 30), 10, vbGreen, , , 0.5 Circle (70, 30), 10, vbRed, , , 2 Circle (30, 75), 10, , -0.75 * pi, -0.25 * pi Cir
46、cle (70, 75), 10, , -0.25 * pi, -0.75 * pi Circle (70, 75), 10, , 1.25 * pi, 1.75 * pi【例【例11-12】 在窗体上绘制以下图形在窗体上绘制以下图形:56VB程序设计第3版第11章第第十十一一章章 图图形形设设计计【例【例11-13】使用使用Circle方法绘制如下图所示的艺术方法绘制如下图所示的艺术图案。该艺术图案由一系列的圆组成,这些圆的图案。该艺术图案由一系列的圆组成,这些圆的圆心在另外一个固定圆(轨迹圆)的圆周上。圆心在另外一个固定圆(轨迹圆)的圆周上。(x0,y0)y y轴轴x x轴轴(0,0)设:
47、设:使用缺省的坐标系统,轨迹圆的圆心坐标为使用缺省的坐标系统,轨迹圆的圆心坐标为(x0,y0),),如下图所示:如下图所示:57VB程序设计第3版第11章第第十十一一章章 图图形形设设计计分析:分析:将该圆将该圆30等分,以圆周上的每一个等分等分,以圆周上的每一个等分点为圆心画圆,圆心的坐标为:点为圆心画圆,圆心的坐标为: (x0+r*Cos(i),y0-r*Sin(i))其中,其中,i为等分点和(为等分点和(x0,y0)的连线与的连线与x轴正方向之间的夹角轴正方向之间的夹角(以弧度为单位以弧度为单位)。r为为轨迹圆的半径。轨迹圆的半径。58VB程序设计第3版第11章第第十十一一章章 图图形形
48、设设计计Private Sub Form_Click() Const pi = 3.14159265 Dim x As Single, y As Single Dim x0 As Single, y0 As Single Dim r As Single, pace As Single Cls r = ScaleHeight / 4 x0 = ScaleWidth / 2 y0 = ScaleHeight / 2 pace = (2 * pi) / 30 代码如下:代码如下:59VB程序设计第3版第11章第第十十一一章章 图图形形设设计计For i = 0 To 2 * pi Step pace
49、 求轨迹圆圆周上各等分点的坐标求轨迹圆圆周上各等分点的坐标 x = x0 + r * Cos(i) y = y0 - r * Sin(i) 以轨迹圆圆周上的等分点为圆心以轨迹圆圆周上的等分点为圆心 以以r*0.8为半径画圆为半径画圆 Circle (x, y), r * 0.8 Next iEnd Sub60VB程序设计第3版第11章第第十十一一章章 图图形形设设计计【例【例11-14】在图片框中画三个扇形和一个在图片框中画三个扇形和一个小圆,配合定时器使扇形旋转起来。小圆,配合定时器使扇形旋转起来。 设计界面:设计界面:运行界面:运行界面:61VB程序设计第3版第11章第第十十一一章章 图图
50、形形设设计计1)首先在窗体模块的通用声明段声明变量)首先在窗体模块的通用声明段声明变量alpha1,用于保存第一个扇形的起始角度,用于保存第一个扇形的起始角度,其他两个扇形的起始角度由其他两个扇形的起始角度由alpha1推出,每推出,每个扇形的终止角由其起始角加上个扇形的终止角由其起始角加上60得出。得出。首先画出初始图形:首先画出初始图形: 代码设计:代码设计:62VB程序设计第3版第11章第第十十一一章章 图图形形设设计计Dim alpha1Private Sub Form_Load() Show Picture1.FillStyle = 0 Picture1.FillColor = vb
51、Blue Picture1.Scale (-1, 1)-(1, -1) alpha1 = 30 设第一个扇形的起始角设第一个扇形的起始角 alpha2 = 90 设第一个扇形的终止角设第一个扇形的终止角 画第一个扇形画第一个扇形 Picture1.Circle (0, 0), 0.7, vbBlue, -alpha1 * 3.14 / 180, -alpha2 * 3.14 / 180 63VB程序设计第3版第11章第第十十一一章章 图图形形设设计计 alpha3 = 150 设第二个扇形的起始角设第二个扇形的起始角 alpha4 = 210 设第二个扇形的终止角设第二个扇形的终止角 画第二个
52、扇形画第二个扇形 Picture1.Circle (0, 0), 0.7, vbBlue, -alpha3 * 3.14 / 180, -alpha4 * 3.14 / 180 alpha5 = 270 设第三个扇形的起始角设第三个扇形的起始角 alpha6 = 330 设第三个扇形的终止角设第三个扇形的终止角 画第三个扇形画第三个扇形 Picture1.Circle (0, 0), 0.7, vbBlue, -alpha5 * 3.14 / 180, -alpha6 * 3.14 / 180 在中心处画一个小圆在中心处画一个小圆 Picture1.Circle (0, 0), 0.1End
53、Sub64VB程序设计第3版第11章第第十十一一章章 图图形形设设计计2)假设运行时,单击图片框启动定时器)假设运行时,单击图片框启动定时器Timer1的事件过程,则代码如下:的事件过程,则代码如下:Private Sub Picture1_Click() Timer1.Enabled = TrueEnd Sub65VB程序设计第3版第11章第第十十一一章章 图图形形设设计计Private Sub Timer1_Timer() Picture1.Cls alpha1 = (alpha1 + 5) Mod 360 If alpha1 = 0 Then alpha11=alpha1+0.001 _
54、 Else alpha11 = alpha1 alpha2 = (alpha1 + 60) Mod 360 If alpha2=0 Then alpha12=alpha2 + 0.001 _ Else alpha12 = alpha2 3)在定时器的)在定时器的Timer的事件过程中实现每隔的事件过程中实现每隔100毫秒重新画图,让每个扇形的画图角毫秒重新画图,让每个扇形的画图角度增加度增加5度,产生旋转的效果。度,产生旋转的效果。 66VB程序设计第3版第11章第第十十一一章章 图图形形设设计计 Picture1.Circle (0, 0), 0.7, vbBlue, _ -alpha11
55、* 3.14 / 180, _ -alpha12 * 3.14 / 180 alpha3 = (alpha2 + 60) Mod 360 If alpha3=0 Then alpha21=alpha3 + 0.001 _ Else alpha21 = alpha3 alpha4 = (alpha3 + 60) Mod 360 If alpha4=0 Then alpha22=alpha4 + 0.001 _ Else alpha22 = alpha4 Picture1.Circle (0, 0), 0.7, vbBlue, _ -alpha21 * 3.14 / 180, _ -alpha22
56、 * 3.14 / 180 67VB程序设计第3版第11章第第十十一一章章 图图形形设设计计 alpha5 = (alpha4 + 60) Mod 360 If alpha5=0 Then alpha31=alpha5+0.001 _ Else alpha31 = alpha5 alpha6 = (alpha5 + 60) Mod 360 If alpha6=0 Then alpha32=alpha6+0.001 _ Else alpha32 = alpha6 Picture1.Circle (0, 0), 0.7, vbBlue, _ -alpha31 * 3.14 / 180, _ -al
57、pha32 * 3.14 / 180 Picture1.Circle (0, 0), 0.1End Sub 68VB程序设计第3版第11章第第十十一一章章 图图形形设设计计11.4 与绘图有关的常用属性、事件和方法与绘图有关的常用属性、事件和方法11.4.1 清除图形方法清除图形方法(Cls)格式格式: 对象名对象名.Cls功能功能: 清除运行时清除运行时 Form 或或 PictureBox 所生所生成的图形和文本成的图形和文本说明:说明: 对象名:对象名:窗体、图片框的名称。窗体、图片框的名称。 注意注意: : Cls 的功能受的功能受AutoRedraw 的影响。的影响。调用调用 Cls
58、 之后,对象的之后,对象的 CurrentX 和和 CurrentY 属性复位为属性复位为 0。69VB程序设计第3版第11章第第十十一一章章 图图形形设设计计例例:以下语句将从图片框的中心(原点)位以下语句将从图片框的中心(原点)位置画一条直线。置画一条直线。 设置图片框的原点在其中心位置设置图片框的原点在其中心位置 Picture1.Scale (-1, 1)-(1, -1) 用用Cls清除图片框中的图形,清除图片框中的图形, 并并将当前坐标移到原点将当前坐标移到原点 Picture1.Cls 从当前坐标处到点从当前坐标处到点(0.5,0.5)画一条直线画一条直线 Picture1.Lin
59、e -(0.5, 0.5)70VB程序设计第3版第11章第第十十一一章章 图图形形设设计计1. 线宽属性线宽属性DrawWidth设置图形方法输出的线宽。设置图形方法输出的线宽。线宽的取值范围从线宽的取值范围从1到到32767。该值以像素为单位表示线宽。缺省值为该值以像素为单位表示线宽。缺省值为1,即一个像素宽。,即一个像素宽。如果如果DrawWidth属性值大于属性值大于1,画出的图,画出的图形是实线;如果形是实线;如果DrawWidth属性值等于属性值等于1,可以通过,可以通过DrawStyle属性画出各种线型。属性画出各种线型。11.4.2 线宽属性和线型属性线宽属性和线型属性71VB程
60、序设计第3版第11章第第十十一一章章 图图形形设设计计DrawStyle = 0DrawStyle = 1DrawStyle = 2DrawStyle = 3DrawStyle = 4DrawStyle = 5DrawStyle = 6透明透明DrawStyle属性和各种线型的对应关系:属性和各种线型的对应关系:2. 线型属性线型属性DrawStyle 设置图形方法输出的线型设置图形方法输出的线型。72VB程序设计第3版第11章第第十十一一章章 图图形形设设计计1. 填充颜色属性填充颜色属性FillColor 设置封闭图形的填充颜色。设置封闭图形的填充颜色。2. 填充样式属性填充样式属性Fil
61、lStyle 设置封闭图形的填充样式。取值设置封闭图形的填充样式。取值07。 下图是各种填充样式:下图是各种填充样式:11.4.3 填充颜色属性和填充样式属性填充颜色属性和填充样式属性73VB程序设计第3版第11章第第十十一一章章 图图形形设设计计当当AutoRedraw属性为属性为“False”(缺省值)(缺省值)时,对象中的图形不具有持久性,即在对时,对象中的图形不具有持久性,即在对象被改变大小,或覆盖它的对象移开后,象被改变大小,或覆盖它的对象移开后,对象上的图形将丢失;对象上的图形将丢失;当当AutoRedraw属性设置为属性设置为“True”时,表时,表示对象的自动重画功能有效,对象
62、上的图示对象的自动重画功能有效,对象上的图形具有持久性,即在对象被改变大小,或形具有持久性,即在对象被改变大小,或覆盖它的对象移开后,对象内的图形将被覆盖它的对象移开后,对象内的图形将被重画,恢复原来的样子。重画,恢复原来的样子。 11.4.4 自动重画自动重画(AutoRedraw)属性属性74VB程序设计第3版第11章第第十十一一章章 图图形形设设计计运行时运行时 在程序中设置在程序中设置 AutoRedraw,可以,可以在画持久图形在画持久图形(如背景色或网格如背景色或网格)和临时图形和临时图形之间切换。如果设置之间切换。如果设置 AutoRedraw 为为 True,以前的输出成为背景
63、屏幕的一部分。将,以前的输出成为背景屏幕的一部分。将AutoRedraw 设置为设置为 False后,用后,用 Cls 方法方法清除绘图区时不会删除背景图形。把清除绘图区时不会删除背景图形。把 AutoRedraw 改回改回 True 后,再用后,再用 Cls 将清将清除背景图形。除背景图形。75VB程序设计第3版第11章第第十十一一章章 图图形形设设计计【例【例11-15】在窗体的】在窗体的AutoRedraw属性设置为属性设置为True时,画一个绿色大圆,在窗体的时,画一个绿色大圆,在窗体的AutoRedraw属性设置为属性设置为False时,画一个红色小圆。将一个图时,画一个红色小圆。将
64、一个图片框移过这两个圆,观察片框移过这两个圆,观察AutoRedraw属性的作用属性的作用 设计界面:设计界面:Timer1Picture176VB程序设计第3版第11章第第十十一一章章 图图形形设设计计1)在窗体的)在窗体的Click事件过程中编写代码,在事件过程中编写代码,在AutoRedraw属性为属性为True时画一个绿色实时画一个绿色实心圆(持久图形);在心圆(持久图形);在AutoRedraw属性为属性为False时画一个红色实心圆(非持久图形);时画一个红色实心圆(非持久图形);然后启动定时器。然后启动定时器。代码设计:代码设计:Private Sub form_Click()
65、Form1.Scale (-1, 1)-(1, -1) Form1.FillStyle = 0 Form1.AutoRedraw = True Form1.FillColor = vbGreen 画一个绿色实心圆(持久图形)画一个绿色实心圆(持久图形) Form1.Circle (0, 0), 1 77VB程序设计第3版第11章第第十十一一章章 图图形形设设计计 Form1.AutoRedraw = False Form1.FillColor = vbRed 画一个红色实心圆(非持久图形)画一个红色实心圆(非持久图形) Form1.Circle (0, 0), 0.5 Timer1.Enabl
66、ed = TrueEnd SubPrivate Sub Timer1_Timer() Picture1.Move Picture1.Left + 0.1, _ Picture1.Top - 0.1End Sub2)在定时器的)在定时器的Timer事件过程中将图片框事件过程中将图片框向窗体右下角逐渐移动。向窗体右下角逐渐移动。 78VB程序设计第3版第11章第第十十一一章章 图图形形设设计计运行效果:运行效果:单击窗体呈单击窗体呈现的界面现的界面图片框移图片框移过之后过之后79VB程序设计第3版第11章第第十十一一章章 图图形形设设计计在应用程序运行时,当一个对象被放大之后;或在应用程序运行时,
67、当一个对象被放大之后;或当一个覆盖该对象的窗体被移开之后,如果要保当一个覆盖该对象的窗体被移开之后,如果要保持该对象上所画图形的完整性持该对象上所画图形的完整性(重现原来的图形重现原来的图形),可以选择触发,可以选择触发Paint事件来完成图形的重画工事件来完成图形的重画工作。作。如果如果 AutoRedraw 属性被设置为属性被设置为 True,重新绘重新绘图将会自动进行,此时图将会自动进行,此时Paint 事件无效。事件无效。使用使用 Refresh 方法时,方法时,Paint 事件即被自动调用。事件即被自动调用。在在Resize事件过程中调用事件过程中调用Refresh方法,强制使用方法
68、,强制使用Paint 事件重画图形。事件重画图形。11.4.5 Paint事件事件80VB程序设计第3版第11章第第十十一一章章 图图形形设设计计【例【例11-16】在窗体中画一个米字形。当窗在窗体中画一个米字形。当窗体的大小改变时,米字形也随着自动调整。体的大小改变时,米字形也随着自动调整。81VB程序设计第3版第11章第第十十一一章章 图图形形设设计计 Private Sub Form_Paint() Dim HalfX, HalfY 设置到宽度的一半。设置到宽度的一半。 HalfX = ScaleLeft + ScaleWidth / 2 设置到高度的一半。设置到高度的一半。 HalfY
69、 = ScaleTop + ScaleHeight / 2 画对角线画对角线 Line (ScaleLeft, ScaleTop)-(ScaleWidth, ScaleHeight) Line (ScaleLeft, ScaleHeight)- (ScaleWidth, ScaleLeft) 画十字画十字 Line (HalfX, ScaleTop)-(HalfX, ScaleHeight) Line (ScaleLeft, HalfY)-(ScaleWidth, HalfY)End Sub82VB程序设计第3版第11章第第十十一一章章 图图形形设设计计Private Sub Form_Res
70、ize() RefreshEnd Sub83VB程序设计第3版第11章第第十十一一章章 图图形形设设计计11.5 保存绘图结果保存绘图结果 使用使用SavePicture语句可以将在对象上绘语句可以将在对象上绘制的持久图形和加载到对象中的图像保存到制的持久图形和加载到对象中的图像保存到文件中。文件中。 格式:格式:SavePicture 对象名对象名.Picture|对象名对象名.Image , 字符串表达式字符串表达式功能:功能:从对象或控件的从对象或控件的Picture或或Image属性属性中将图形或图像保存到指定的文件中。中将图形或图像保存到指定的文件中。84VB程序设计第3版第11章第
71、第十十一一章章 图图形形设设计计说明:说明:1)字符串表达式:指定要保存的图形或图)字符串表达式:指定要保存的图形或图像文件的名称,可以包含路径。像文件的名称,可以包含路径。2)对象名)对象名.Picture:表示将对象的:表示将对象的Picture属性指定的图片保存到指定文件中,如属性指定的图片保存到指定文件中,如果是位图、图标、元文件或增强元文件,果是位图、图标、元文件或增强元文件,则使用则使用SavePicture语句保存后,它们将语句保存后,它们将以和原始文件同样的格式保存;如果是以和原始文件同样的格式保存;如果是GIF或或JPEG文件,则它们将被保存为位文件,则它们将被保存为位图文件
72、。图文件。3)对象名)对象名.Image:图片总是以位图的格式:图片总是以位图的格式保存而不管其原始格式。用图形方法绘保存而不管其原始格式。用图形方法绘制的图形应使用制的图形应使用Image属性保存。属性保存。 85VB程序设计第3版第11章第第十十一一章章 图图形形设设计计【例例11-17】比较使用比较使用SavePicture语句保存语句保存Picture属性和保存属性和保存Image属性的区别属性的区别 界面设计:界面设计: Picture1Command1 Command2 Command386VB程序设计第3版第11章第第十十一一章章 图图形形设设计计代码设计:代码设计:1)在)在“
73、画图画图”按钮按钮Command1的的Click事件事件过程中,首先设置过程中,首先设置Picture1的的AutoRedraw属性为属性为True,然后在图片框,然后在图片框中画一些垂直线条,使这些线条成为永久中画一些垂直线条,使这些线条成为永久图形。图形。 Private Sub Command1_Click() Picture1.AutoRedraw = True Picture1.DrawWidth = 5 Picture1.ForeColor = vbWhite Picture1.Scale (0, 0)-(10, 10) For i = 1 To 10 Picture1.Line
74、(i, 0)-(i, 10) Next iEnd Sub87VB程序设计第3版第11章第第十十一一章章 图图形形设设计计Private Sub Command2_Click() SavePicture Picture1.Picture, d:a.bmpEnd Sub 2)在)在“保存保存Picture”按钮按钮Command2的的Click事件过程中,使用事件过程中,使用SavePicture语句语句指定保存指定保存Picture属性。属性。3)在)在“保存保存Image”按钮的按钮的Click事件过程中事件过程中指定保存指定保存Image属性。属性。Private Sub Command3_
75、Click() SavePicture Picture1.Image, d:b.bmpEnd Sub88VB程序设计第3版第11章第第十十一一章章 图图形形设设计计运行界面:运行界面: 89VB程序设计第3版第11章第第十十一一章章 图图形形设设计计保存的文件:保存的文件:b.bmp文件文件 a.bmp文件文件90VB程序设计第3版第11章第第十十一一章章 图图形形设设计计本章小结本章小结: : 1. 坐标系统坐标系统 改变坐标系统的方法改变坐标系统的方法:ScaleLeft和和ScaleTop属性属性ScaleWidth和和ScaleHeight属性属性Scale方法方法 2. 与位置、大小
76、有关的属性与位置、大小有关的属性Left;Top;Width;HeightScaleLeft;ScaleTop;ScaleHeight; ScaleWidth91VB程序设计第3版第11章第第十十一一章章 图图形形设设计计3. 颜色颜色在设计阶段设置颜色在设计阶段设置颜色在运行阶段设置颜色在运行阶段设置颜色使用使用 RGB函数函数使用使用QBColor函数函数使用颜色常量使用颜色常量使用颜色的十六进制值使用颜色的十六进制值使用系统颜色使用系统颜色92VB程序设计第3版第11章第第十十一一章章 图图形形设设计计4. 图形控件图形控件Shape控件控件Line控件控件5. 绘图方法绘图方法画点方法画点方法PSet画直线、矩形方法画直线、矩形方法Line画圆方法画圆方法Circle93VB程序设计第3版第11章第第十十一一章章 图图形形设设计计6. 与绘图有关的常用属性、事件和方法与绘图有关的常用属性、事件和方法Cls方法方法DrawWidth属性属性DrawStyle属性属性FillColor属性属性FillStyle属性属性AutoRedraw属性属性Paint事件事件7. 保存绘图结果:保存绘图结果:SavePicture 94VB程序设计第3版第11章