页数:43页文件大小:437.8 KB来源: VB程序设计ppt课件
本课件讲解VB图形设计,先说明缺省坐标系统、刻度单位与自定义坐标系的两种方法,介绍颜色的表示与颜色常量,随后讲解Shape与Line图形控件,最后系统给出PSet画点、Line画直线矩形、Circle画圆三种绘图方法及其相关属性、事件与方法。
第11章 图形设计
11.1 图形设计基础
11.1图形设计基础11.1.1坐标系统x轴y轴(0,0)缺省坐标系统:
1. 刻度单位
1.刻度单位缺省刻度单位:缇(Twip)改变刻度单位:对象名.ScaleMode =属性值厘米毫米英寸字符,水平单位:120缇;垂直单位:240缇像素,表示分辩率的最小单位点,72点等于一英寸缇(缺省值),1440缇等于一英寸用户自定义。
可以设置ScaleHeight,ScaleWidth,ScaleTop,ScaleLeft属性说明7–Centimeter6-Millimeter5–Inch4-Character3-Pixel2-Point1–Twip0–User属性值
2. 自定义坐标系
2自定义坐标系VB允许自定义坐标系,包括原点,轴线方向和轴线“刻度”方法一:通过ScaleLeft,ScaleTop,ScaleWidth和ScaleHeight属性实现。
如:[对象.]ScaleLeft=x, [对象.] ScaleTop=y[对象.] ScaleWidth=<宽度>, [对象.] ScaleHeight=<高度值>例:
Form1. ScaleLeft=500, Form1. ScaleTop=50 Form1. ScaleWidth=100, Form1. ScaleHeight=50这样就将窗体1左上角的坐标定义为(200,100),宽度划分为100刻度单位,高度划分为50刻度单位。这两个单位之间是互相独立的,并没有物理长度的联系。(600,50)(500,50)(500,100)(600,100)窗体的坐标属性示意
(Left,Top)Width(ScaleLeft,ScaleTop)HeightScaleHeightScaleWidth
用Scale方法自定义坐标系
Scale方法的等价写法
自定义坐标系示例
2.自定义坐标系【例11-1】使用缺省的坐标系统:
Private Sub Command1_Click() Label1.Left = 0 Label1.Top = 0 End Sub(0,0)自定义坐标系应用示例
使用自定义的坐标系统:
Private Sub Command1_Click() Form1.ScaleLeft = 200 Form1.ScaleTop = 300 Label1.Left = 0 Label1.Top = 0 End Sub(200,300)自定义坐标系应用示例(代码)
ScaleWidth和ScaleHeight属性表示容器对象的内部宽度与高度。用于自定义一个刻度单位。例:使用ScaleWidth和ScaleHeight改变窗体刻度单位设窗体高度是2000Twips,宽度是3000Twips。
此时水平和垂直刻度单位均为1Twips。如果设置:ScaleHeight=500则将窗体的高度划分为500个单位,每个单位为2000/500,即4Twips如果设置:ScaleWidth=1000则将窗体的宽度划分为1000个单位,每个单位为3000/1000,即3Twips
窗体内部宽度与高度属性
【例11-2】移动图形到窗体中央
【例11-2】将一个图形(Shape1)的左上角移动到窗体的中央位置。
Private Sub Command1_Click() Form1.ScaleHeight = 2 Form1.ScaleWidth = 2 Shape1.Left = 1 Shape1.Top = 1 End Sub(1,1)(0,0)【例11-3】左下角为坐标原点
【例11-3】定义窗体的左下角为原点(0,0),y坐标轴正方向向上。
Private Sub Form_Load()ScaleHeight =-4ScaleWidth = 4ScaleTop = 4 End Sub Private Sub Command1_Click() Shape1.Left = 1 Shape1.Top = 1 End Sub(0,0)(1,1)【例11-4】窗体中央为坐标原点
【例11-4】定义窗体的中央位置为原点(0,0),y坐标轴正方向向上。
Private Sub Form_Load()ScaleHeight =-4ScaleWidth = 4ScaleTop = 2ScaleLeft =-2 End Sub Private Sub Command1_Click() Shape1.Left = 1 Shape1.Top = 1 End Sub(0,0)(1,1)当前坐标CurrentX、Y
Form1.CurrentX = 200 Form1.CurrentY = 200 Form1. Print "当前坐标为(200,200)"颜色的表示与设置
常用颜色常量
11.2 图形控件
图形控件用于在对象(窗体、图片框)上绘制特定形状的图形,如圆、直线等。图形控件的属性,既可以在设计阶段设置,也可以在运行阶段由程序动态的改变。
11.2图形控件Shape控件Line控件
Shape控件的属性
1.属性Shape(见P246表11-4)BorderStyle、BorderColor、BorderWidthBackStyle、BackColorFillStyle、FillColorBackColorShapeFillStyleFillColor11.2.1Shape控件例如:
Move方法
2.方法Moveobject.Move left[, top[, width[, height]]]【例11-6】在窗体上移动一正方形,每次移动时使正方形的长和宽增加100缇。
Private Sub Command1_Click() Shape1.Move Shape1.Left + 100, Shape1.Top + _100, Shape1.Width + 100, Shape1.Height + 100 End SubLine控件的作用
1.作用设计时在窗体上绘制直线。2.属性BorderStyle(见P247表11-5)BorderWidthX1、X2、Y1、Y2注意:运行时可以通过改变X1、X2、Y1和Y2属性来移动它或者调整它的大小。
而不能使用Move方法11.2.2Line控件
【例11-7】设计简单秒表
【例11-7】设计一个简单的秒表。单击“开始”按钮开始移动秒针,单击“停止”按钮停止移动。Picture1Shape1Line1Command2Command1Timer1
【例11-7】的代码实现
代码如下:Dim arph'秒针旋转角度
Private Sub Form_Load() Timer1.Enabled = False'关闭定时器 Timer1.Interval = 1000'设定时时间为1秒 Picture1. Scale (-1, 1)-(1,-1)'定义图片框坐标系Line1.X1 = 0Line1.Y1 = 0'将秒针的起点移动到原点Line1.X2 = 0Line1.Y2 = 0.7'将秒针的另一端移动到正上方,指向0arph = 0'旋转角度为0 End Sub【例11-7】启动与停止代码
Private Sub Command1_Click() Timer1.Enabled = True'启动定时器 End Sub Private Sub Command2_Click() Timer1.Enabled = False'关闭定时器 End Sub Private Sub Timer1_Timer()arph=arph+3.1415926/30Line1.y2=0.7*cos(arph)Line1.x2=0.7*sin(arph)End sub例,曲柄滑块机构的演示11.3 绘图方法
11.3绘图方法11.3.1画点方法(Pset)格式:[<对象名>.]PSet [Step] (x, y) [,<颜色>]功能:在对象的指定位置,用一定的颜色画点说明:<对象名>—窗体、图片框、缺省为当前窗体。
Step—可选的,指定相对于由CurrentX和CurrentY属性提供的当前图形位置的坐标。(x, y)—点的水平和垂直坐标。
<颜色>—绘制该点的RGB颜色。省略时使用<对象名>的ForeColor属性值。
【例11-8】绘制正弦曲线
【例11-8】用PSet方法在窗体上绘制一条[00,3600]的正弦曲线。
Private Sub Form_Click()DrawWidth = 2 Scale (0, 1)-(360,-1) For x = 0 To 360y = Sin(x * 3.1415926 / 180) P Set (x, y), vbRed Next x End Sub【例11-9】绘制星形曲线
【例11-9】用PSet方法在窗体上绘制一条如下图所示的星形曲线,曲线由以下参数方程决定:x=sin2t*costy=sin2t*sint其中t的取值范围为0≤t≤2π
【例11-9】绘制星形曲线(代码2)
Private Sub Form_Click() Scale (-1, 1)-(1,-1)DrawWidth = 2ForeColor = vbRed For t = 0 To 2 * 3.1415926 Step 0.001x = Sin(2 * t) * Cos(t)y = Sin(2 * t) * Sin(t) P Set (x, y) Next t End SubLine方法的格式
【例11-10】绘制直线与矩形
【例11-10】单击窗体在窗体上绘制直线、矩形。
Private Sub Form_Click()ScaleWidth = 100ScaleHeight = 100DrawWidth = 5'画三角形 Line (10, 30)-(10, 80), vbRedLine-(30, 80), vbGreenLine-(10, 30), vbBlue'画矩形CurrentX = 40: CurrentY = 30Line-(60, 80), vbRed, B'画实心矩形CurrentX = 70: CurrentY = 30Line-Step(20, 50), vbMagenta, BF End Sub【例11-11】给星形曲线绘制坐标线
。
Private Sub Form_Click() Scale (-1, 1)-(1,-1)DrawWidth = 3 Line (-1, 0)-(1, 0), vbBlue Line (0, 1)-(0,-1), vbBlueDrawWidth = 1 For i =-1 To 1 Step 0.1 Line (i, 0.05)-(i, 0)'画垂直刻度 Next iDrawWidth = 2ForeColor = vbRed For t = 0 To 2 * 3.1415926 Step 0.001x = Sin(2 * t) * Cos(t)y = Sin(2 * t) * Sin(t) P Set (x, y) Next t: End Sub11.3.3 画圆方法
Circle方法的注意
注意:
Circle方法总是沿逆时针方向绘图。【例11-13】在窗体上绘制以下图形: Const pi = 3.14159265ScaleWidth = 100ScaleHeight = 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 Circle (70, 75), 10, ,-0.25 * pi,-0.75 * pi Circle (70, 75), 10, , 1.25 * pi, 1.75 * pi【例11-14】绘制扇形图形
【例11-14】在窗体上绘制以下图形:x轴y轴450450
【例11-14】绘制扇形图形(代码)
Private Sub Form_Click()FillStyle = 0'定义填充风格—Solid Scale (0, 100)-(100, 0)cx = 50'圆心X坐标cy = 0'圆心Y坐标r = 60'半径 For i = 45 To 130 Step 5 If i Mod 10 <> 0 ThenFillColor = vbRed ElseFillColor = vbYellow End If Circle (cx, cy), r, ,-i * 3.1416 / 180,-(i + 5) *3.1416 / 180 Next i End Sub11.4 绘图相关属性事件方法
线宽属性DrawWidth
线型属性DrawStyle
DrawStyle = 0DrawStyle = 1DrawStyle = 2DrawStyle = 3DrawStyle = 4DrawStyle = 5DrawStyle = 6透明
填充颜色与填充样式
1.填充颜色属性FillColor改变填充图形的颜色。2.填充样式属性FillStyle设置封闭图形的填充样式。见P253表11-7。
下图是各种填充样式:11.4.3填充颜色属性和填充样式属性
AutoRedraw属性的作用
使用如Print、PSet、Line和Circle方法,在改变对象大小或隐藏在另一个对象后又重新显示的情况下,设置AutoRedraw为True,将在Form或PictureBox控件中自动重绘输出。
运行时在程序中设置AutoRedraw,可以在画持久图形(如背景色或网格)和临时图形之间切换。如果设置AutoRedraw为True,以前的输出成为背景屏幕的一部分。
将AutoRedraw设置为False后,用Cls方法清除绘图区时不会删除背景图形。把AutoRedraw改回True后,再用Cls将清除背景图形。
11.4.4自动重画(AutoRedraw)属性
Paint事件的使用
在应用程序运行时,当一个对象被移动或改变大小之后;或当一个覆盖该对象的窗体被移开之后,如果要保持该对象上所画图形的完整性(重现原来的图形),可以选择触发Paint事件来完成图形的重画工作。
如果AutoRedraw属性被设置为True,重新绘图将会自动进行,此时Paint事件无效。使用Refresh方法时,Paint事件即被自动调用。
在Resize事件过程中调用Refresh方法,强制使用Paint事件重画图形。11.4.5Paint事件
本章小结
第11章 小结(续)
4.图形控件Shape控件Line控件5.绘图方法画点方法PSet画直线、矩形方法Line画圆方法Circle6.与绘图有关的常用属性、事件和方法清除图形方法(Cls)DrawWidth和DrawStyle属性FillColor属性和FillStyle属性自动重画(AutoRedraw)属性Paint事件
下载地址:{{downurl}}
{{{a}}}
{{#b}}{{{b}}}
{{/b}} {{/title}} {{#nolog}}登陆注册
{{/nolog}} {{#djsx}}点我刷新
{{/djsx}} {{#gocz}} {{/gocz}} {{#ffqr}} {{/ffqr}}