第10章处理图形.ppt
《第10章处理图形.ppt》由会员分享,可在线阅读,更多相关《第10章处理图形.ppt(78页珍藏版)》请在三一文库上搜索。
1、第10章 处理图形,Visual Basic 程序设计教程,Visual Basic程序设计教程,2,本章主要介绍 绘图属性 绘图方法 图片框 影像框,Visual Basic程序设计教程,3,10.1 概述,图形一般指图绘形象,描画出物体的轮廓、形状等。 由图元组成,图元可以是点、线、圆、字符、填充区等。 每个图元有它的数据定义和外貌特征。如线段端点、粗细等。 VB提供了一些控件和方法,绘制图元,最终构成图形 容器是绘制图形或控件的场所 容器中的对象只能在容器内变动。 窗体、框架、图片框是容器 移动容器时,内部对象与容器的相对位置保持不变。,Visual Basic程序设计教程,4,VB容器
2、的图层从前到后为: 前层非绘图控件所在层,如命令按钮、复选框等; 中间层绘图控件和标签所在层; 底层绘图方法显示结果的地方。 图层显示特性依靠:AutoRedraw和ClipControls属性的设置及绘图方法是否在Paint事件过程内。 图像一般是指绘制、摄制或印制的形象。 可将它们装载到图片框、影像框可窗体上,Visual Basic程序设计教程,5,10.2 模拟单摆,【例10-1】设计一个模拟单摆 控件: 图片框控件Picture1:作单摆容器 直线控件Line1:作绳索 形状控件Shape1:作球(设计界面中为矩形) 定时器控件Timer1:控制摆动。,Visual Basic程序设
3、计教程,6,2个模块级变量A和D,表示摆动角度和方向。 2个事件过程: Form_Load,初始化界面和控件属性 Timer1_Timer,控制单摆的运动。,Visual Basic程序设计教程,7,Option Explicit Dim A As Integer, D As Integer 模块级变量,A表示角度,D表示方向 Const PI = 3.1415926 Private Sub Form_Load() Form1.Width = 1.3 * Form1.Height 设置窗体的宽度和高度比例 Picture1.Width = 1.5 * Picture1.Height 设置图片框
4、的宽度和高度比例 Picture1.Scale (-150, -5)-(150, 195) 更改坐标系统 Shape1.FillStyle = 0 使形状控件的填充模式为“实心“ Shape1.FillColor = vbRed 使形状控件填充红色 Shape1.BorderColor = vbRed 使形状控件的边界颜色为红色 Shape1.Width = 15 按坐标系,更改形状控件大小 Shape1.Shape = 3 使形状控件的形状为圆形 Line1.BorderColor = vbRed 使绳索颜色为红色 Line1.X1 = 0: Line1.Y1 = 0 使绳索上端在原点(0,
5、0)上 Picture1.AutoRedraw = True 使图片框的重绘属性为True Picture1.Line (-10, 0)-(10, 0) 顶端画一条固定绳索的横线 Timer1.Interval = 100 A = -20: D = -1 设置初始角度和方向 End Sub,Visual Basic程序设计教程,8,Private Sub Timer1_Timer() Dim X As Single, Y As Single If D = -1 Then A = A + 2 Else A = A - 2 X = 170 * Sin(A * PI / 180) 确定圆心和直线下端
6、的位置 Y = 170 * Cos(A * PI / 180) Line1.X2 = X: Line1.Y2 = Y 更改直线下端位置 Shape1.Left = X - Shape1.Width / 2 使圆心位置在直线的下端 Shape1.Top = Y - Shape1.Height / 2 If D = -1 And A = 20 Or D = 1 And A = -20 Then D = -D 20改方向 End Sub Scale方法使图片框左上角和右下角坐标分别为(-150,-5)和(150,195)。 而170表示着绳索的长度,可以取其它值,但应使整个单摆可见。,Visual
7、Basic程序设计教程,9,10.3 什么是VB坐标系,坐标系是用于确定数与基本几何对象之间对应关系的参考系,是形和数结合的基础。 VB坐标系是确定对象和图形位置的参考系。 VB中每一个容器采用(x,y)的二维坐标系统 每个对象、图形操作,都要使用坐标系。 VB坐标系统使用有以下规则: 移动或调整控件大小时,使用容器的坐标系统。 绘图方法和Print方法,使用容器的坐标系统。,Visual Basic程序设计教程,10,10.3.1 VB默认坐标系 VB坐标系每个点用(x,y)表示 x是水平方向沿x轴的位置,默认最左端是0 y是垂直方向沿y轴的位置,默认最上端是0 坐标单位又称为坐标刻度,默认
8、缇(twips)。 还可以使用磅、像素和毫米等。 屏幕的左上角的坐标总是(0,0),Visual Basic程序设计教程,11,其它容器在缺省状态下,左上角是(0,0)。 窗体(0,0)点指窗体标题栏下边沿的左上角。 使用对象的刻度属性和Scale方法,可重新设置容器的坐标系统。,Visual Basic程序设计教程,12,10.3.2 Scale方法 使用Scale方法可以创建自定义刻度。 Scale方法的使用格式为: 容器名.Scale (x1,y1)-(x2,y2) 1容器名指窗体名或图片框控件名。 缺省指当前窗体 2(x1, y1)和(x2, y2) 为新坐标系统左上角和右下角坐标 3
9、省略(x1,y1)-(x2,y2),恢复缺省刻度。,Visual Basic程序设计教程,13, 例10-1中Picture1.Scale (-150, -5)-(150, 195)更改图片框坐标系如上图。 这样求运动点(x,y)的位置比较方便 设绳索长为170,则当绳索与y轴的夹角为a时,则x=170sina,y=170cosa。,Visual Basic程序设计教程,14,10.3.3 坐标属性 使用坐标属性可以更改容器的坐标刻度,也可以自定义坐标系。 ScaleMode:设置坐标刻度,缺省值为1(缇) ScaleLeft:表示或设置对象左边界水平坐标 ScaleTop:表示或设置对象上边
10、界垂直坐标 ScaleWidth:表示或设置对象内水平度量单位数 ScaleHeight:表示或设置对象内垂直度量单位数 CurrentX:当前输出的水平坐标。程序中使用。 CurrentY:当前输出的垂直坐标。程序中使用。,Visual Basic程序设计教程,15,属性说明: ScaleWidth、ScaleHeight不同于Width、Height ScaleMode属性可以取值07,表示刻度分别为自定义、缇、磅、像素、字符、英寸、毫米和厘米。 更改ScaleWidth、ScaleHeight、ScaleLeft、ScaleTop之 一时,VB自动将ScaleMode的值设为0。 如Sc
11、ale (-150, -5)-(150, 195),也可以表示成: ScaleWidth=300:ScalHeight=200: ScaleLeft=-150:ScaleTop=-5 若要改坐标轴方向,可将ScaleWidth或ScaleHeight设置成负值,Visual Basic程序设计教程,16,ScaleMode属性取值为17时的刻度,称为标准刻度 在设置了ScaleMode属性的值后,VB会重定义ScaleWidth和ScaleHeight,使它们与新刻度保持一致。 左上角坐标总是:(ScaleLeft,ScaleTop) 右下角坐标总是: (ScaleLeft+ScaleWidt
12、h,ScaleTop +ScaleHeight)。,Visual Basic程序设计教程,17,10.4 使用绘图方法,10.4.1 画点PSet方法 绘图方法可画点、画线、画矩形、画椭圆等。 格式:对象名.PSet (x,y) ,颜色 1(x,y)为所画点的坐标位置 2颜色指点的颜色。缺省时由容器的ForeColor属性决定。 例如:PSet (1000, 1000), RGB(255, 0, 0) 在(1000,1000)处画红点,大小由容器的DrawWidth属性决定。 3擦除一个点,可采用以背景色重画点。 4 Cls方法可擦除绘图方法及Print方法的输出内容。,Visual Basi
13、c程序设计教程,18,【例10-2】绘制一条y=x2的抛物线。 Private Sub Form_Click() Dim x As Single Scale (-10, 105)-(10, -2) For x = -9 To 9 Step 0.01 PSet (x, x * x) Next x End Sub,Visual Basic程序设计教程,19,10.4.2 画直线和矩形Line的方法 使用Line方法可以画出直线或矩形。 1画线格式:对象名.Line (x1,y1)-(x2,y2) ,颜色 (x1,y1)和(x2,y2)分别为起点和终点坐标 如:Line (100, 150)-(14
14、00, 1300), vbRed 缺省起点 (x1,y1),表示将当前输出位置作为 起点。,Visual Basic程序设计教程,20,坐标点的另一种表示形式为:Step(x,y) 是相对位置的表示法,表示当前输出位置水平方向加上x, 垂直方向加上y后得到的坐标点。 对象的当前位置由CurrentX和CurrentY决定 Line (100, 200)-(150, 250)等价:Line (100, 200)-Step(50, 50) VB画直线时,包括了起点,未包括终点。画终点可用: PSet Step(0, 0), color 连续使用缺省起点的Line方法,可以绘制多点折线。,Visua
15、l Basic程序设计教程,21,【例10-3】在窗体上中间画出一个等腰三角形。 可根据窗体ScaleWidth和ScaleHeight属性确定三点位置 由于一条线的终点等价于另一条线的起点,因此除了第一条线以外,其它两条线均可用缺省起点的Line方法。,Visual Basic程序设计教程,22,Private Sub Command1_Click() Dim x1 As Integer, x2 As Integer, x3 As Integer Dim y1 As Integer, y2 As Integer, y3 As Integer x1 = ScaleWidth / 2: y1 =
16、 ScaleHeight / 5 x2 = ScaleWidth / 5: y2 = ScaleHeight / 5 * 4 x3 = ScaleWidth / 5 * 4: y3 = ScaleHeight / 5 * 4 Line (x1, y1)-(x2, y2) Line -(x3, y3) Line -(x1, y1) End Sub,Visual Basic程序设计教程,23,2画矩形采用格式: 对象名.Line (x1,y1)-(x2,y2) ,颜色,BF (x1,y1)和(x2,y2) 为矩形的两个对角顶点坐标 缺省(x1,y1),表示当前输出位置作(x2,y2)的对角顶点 参
17、数B表示绘制矩形 参数F表示矩形填充,即为实心的矩形 如:Line (500, 200)-Step(200, 200), vbRed, B 如: Line (500, 200)-Step(200, 200), vbRed, BF 若颜色缺省,逗号也不能省,Visual Basic程序设计教程,24,【例10-4】编制简易黑板。功能是:用鼠标左键在窗体上拖动时,画出线条;用鼠标右键在窗体上拖动时,擦去线条。击“清除” 擦去所有痕迹。 事件: 窗体MouseDown:画出按下鼠标的第一点 窗体MouseMove:画出线条或删除线条 用背景色,画小矩形擦 “清除”的Click:擦去所有痕迹,Visu
18、al Basic程序设计教程,25,Private Sub Command1_Click() 擦“黑板”Cls End Sub Private Sub Form_Load() 初始化 Form1.Caption = “简易黑板“ Form1.BackColor = RGB(0, 0, 0) Form1.ForeColor = RGB(255, 255, 255) Command1.Caption = “擦除“ End Sub,Visual Basic程序设计教程,26,Private Sub Form_MouseDown(Button As Integer, Shift As Integer,
19、 X As Single, Y As Single) If Button = 1 Then Button = 1表示按下左键, 画第一点 Form1.PSet (X, Y) End If End Sub Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) If Button = 1 Then 左键拖动画线 Form1.Line -(X, Y) ElseIf Button = 2 Then 右键拖动以黑色画实心方块,起擦除作用 Form1.Line (X - 200,
20、Y - 200)-(X + 200, Y + 200), RGB(0, 0, 0), BF End If End Sub,Visual Basic程序设计教程,27,10.4.3 画圆、弧和椭圆Circle方法 Circle方法可画出圆、圆弧、扇形或椭圆。 1画圆格式: 对象名.Circle Step(x,y), 半径 ,颜色 Step(x,y)表示圆心的坐标。 半径的度量单位与容器坐标系的单位相同,不能为负。 画圆时,半径通常由水平单位指定。,Visual Basic程序设计教程,28,如下列代码绘制如图。 Scale (-50, 20)-(50, -20) Line (-15, 15)-(
21、15, -15), , B Circle (0, 0), 15 又如以窗体中心为圆心,以窗体ScaleWidth的1/4为半径画圆: Circle (ScaleWidth / 2 + ScaleLeft, ScaleHeight / 2 + ScaleTop), _ ScaleWidth / 4,Visual Basic程序设计教程,29,【例10-5】编程,在窗体中间画1000个同心多彩圆。 编写通用过程PaintCircle:绘制彩色圆 Sub PaintCircle() Dim R As Integer, X As Integer, Y As Integer X = ScaleWidth
22、 / 2 将x坐标设置在窗体内横向中间 Y = ScaleHeight / 2 将y坐标设置在窗体内纵向中间 If X Y Then R = X * 0.9 Else R = Y * 0.9 Circle (X, Y), R * Rnd, RGB(Rnd * 255, Rnd * 255, Rnd * 255) 画圆 End Sub,Visual Basic程序设计教程,30,Private Sub Command1_Click() Dim i As Integer For i = 1 To 1000 PaintCircle Next End Sub 其中乘0.9是为了最大圆不会紧贴窗体边缘。
23、,Visual Basic程序设计教程,31,2画弧格式为: 对象名.Circle Step(x,y),半径,颜色, Start, End, Aspect 圆弧以弧度为单位,按逆时针方向画弧。 Start和End表示弧线起始角和终止角的弧度数据 平行于X轴的正向为0弧度 如果Start参数或End参数是负数,则VB将画一条连接圆心到负端点的直线。 使用不为1的 Aspect参数,表示为椭圆弧线的一段。 如: Circle (800, 800), 500, , -3.14 / 2, -3.14 / 3 Circle (1800, 800), 500, , 0, 3 * 3.14 / 4,Visu
24、al Basic程序设计教程,32,3画椭圆格式: 对象名.Circle Step(x,y),半径,颜色, Start, End, Aspect 画圆还是画椭圆由圆的方位比Aspect决定。它指定了垂直长度和水平长度的比例 VB在Circle方法中的半径参数对应椭圆的长轴。 ,颜色, Start, End, Aspect四项中任一项都是可选的,当前面的项缺省时,逗号仍不能省去。 省略Start, End中的任一项,表示该项为0,画弧。两项都省去,表示画圆或椭圆。 如以下代码,使用半径均为500,但使用不同的方位比,其效果如图。 Circle (800, 800), 500, , , , 3 C
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 10 处理 图形
链接地址:https://www.31doc.com/p-2546948.html