




已阅读5页,还剩62页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第8章: 图形,12.1 用直线控件画线 12.2 用形状控件画出几何图形 12.3 用Pset方法画点 12.4 用Line方法画线和矩形 12.5 用Circle方法画圆、椭圆、圆弧及扇形 12.6 使用PaintPicture方法 12.7 窗体和控件的图形属性习题,12.1 用直线控件画线,直线控件常用的属性有下述4个。 (1) BorderStyle: 用来指定直线的类型。在属性窗口的属性表中,找到BorderStyle,单击右端箭头,有一个下拉菜单,列出下列7种类型。 0Transparent,透明的,即不显示出线来。 1Solid,实线。 2Dash,虚线。 3Dot,点线。 4Dash-Dot,点画线。 5Dash-Dot-Dot,双点画线。 6Inside Solid,内实线。 只有当BorderWidth为1时才可以用以上7种类型的线,如果BorderWidth不为1,则上述7种类型中只有0和6有效。 (2) BorderWidth: 设置线宽。 (3) BorderColor: 设置颜色。 (4) x1、x2、y1、y2: 指定直线起点和终点的x坐标及y坐标。可以通过改变x1、x2、y1、y2的值改变线的位置。,【例1】在窗体上使用直线控件画7条实线,编写一个事件过程,改变它们的颜色及类型。窗体设计如图所示。 单击工具箱中的“直线控件”图标,在窗体上画出最 上面一条直线,将其“名称”属性定为Lline。 再画第二条直线,将其“名称”属性也定为LLine,这时会弹出一个消息框,问“你已有一个名为LLine的控件,你是否想建立一个控件数组”。选择“是”时,则系统会将该控件作为控件数组LLine中的一个元素LLine(1),而将第一条直线定为数组元素LLine(0)。 下面以同样的方法再画出5条直线,分别定名为LLine(2)LLine(6)。在窗体上加两个命令按钮。将一个按钮的Caption属性设置为“画直线”,另一个设置为“退出”。按题目要求,单击“画直线”命令按钮,应画出不同颜色、不同类型的7条线。编写相应的过程代码:,图12.1,Private Sub cmdLine_Click() Line1(2).BorderWidth = 1 For i = 0 To 6 LLine(i).BorderColor = QBColor(i) LLine(i).BorderStyle = i Next i End Sub QBColor是颜色函数,当参数i为不同值时,给出不同的颜色。运行程序时,单击“画直线”命令按钮,即将窗体上的7条直线分别改变为不同颜色和不同类型的直线,如图下所示。,QBColor 函数返回一个 Long,用来表示所对应颜色值的 RGB 颜色码。 语法:QBColor(color)必要的 color 参数是一个界于 0 到 15 的整型。设置值color 参数有以下这些设置。 值颜色0黑色8灰色1兰色9亮兰色2绿色10亮绿色3青色11亮青色4红色12亮红色5洋红色13亮洋红色6黄色14亮黄色7白色15亮白色,图12.2,用Visual Basic提供的形状控件(Shape)可以方便地画出矩形、正方形、圆、椭圆等简单的几何图形。 使用形状控件的方法是,单击工具箱中的“形状控件”图标,然后按下鼠标左键并在窗体上拖动,在适当的位置释放鼠标,窗体上出现一个矩形框,就是形状控件。 为该控件设置不同的Shape属性,可以得到不同的形状。,12.2 用形状控件画出几何图形,在属性窗口选择Shape属性, 并单击该属性右端向下的箭头, 显示一个下拉列表,其含义如下: 0Rectangle,矩形。 1Square,正方形。 2Oval,椭圆形。 3Circle,圆形。 4Rounded Rectangle,圆角矩形。 5Rounded Square,圆角正方形。 Shape属性的默认值为0(矩形)。若选择3,则在刚才用形状控件画出的矩形中画出一个圆,圆的直径是矩形的短边,也就是说,圆内切于矩形。,【例2】设计如图所示的窗体。 窗体上有6个Shape控件、6个标签以及 “设置形状”、“设置颜色”、“填充线条”、“退出”等4个命令按钮。运行时,如单击“设置形状”命令按钮,将为形状控件设置Shape属性;单击“设置颜色”按钮,用不同的颜色填充各形状控件;单击“填充线条”按钮,以不同的线条填充图形。 为便于程序处理,形状控件和标签控件均使用控件数组。,图12.3,(1) 单击“设置形状”按钮, 执行cmdShape_Click事件过程。 通过For循环设置Shape属性的值。 Private Sub cmdShape_Click() 为各Shape控件设置形状参数 For i = 0 To 5 Shape1(i).Shape = i Label1(i).Caption = “i=“ & Str(i) Next End Sub 如图4所示表示执行cmdShape_Click()事件过程后的结果。,图12.4,(2) 单击“设置颜色”按钮,执行cmdColor_Click 事件过程。 Private Sub cmdColor_Click() 用不同的颜色填充 For i = 0 To 5 Shape1(i).FillStyle = 1 设置FillStyle为透明 Shape1(i).BackStyle = 1 设置BackStyle为不透明 Shape1(i).BackColor = QBColor(i) 设置颜色 Label1(i).Caption = “i=“ & Str(i) Next End Sub,(3) 单击“填充线条”按钮,执行cmdFill_Click()事件过程。 Private Sub cmdFill_Click() 用不同的线形填充图形 For i = 0 To 5 Shape1(i).FillStyle = i+2 Label1(i).Caption = i= & Str(i + 2) Next End Sub 上述事件过程的执行效果如图5所示。,图12.5,形状控件还有下列其他属性。 BorderColor属性: 用来指定图形边界颜色。 BorderWidth属性: 用来指定图形边界宽度。 BorderStyle属性: 用来指定边界线的类型(其值为06,其含义与直线控件中介绍的相同)。,在Visual Basic中,既可以使用图形控件 (如用Line控件、Shape控件)画图, 也可以使用系统提供的图形方法(如使用Line方法、Circle方法等)画图。但是由于使用图形控件所需要的系统资源比较少,因此有利于提高Visual Basic应用程序的性能。另外,使用图形控件创建图形所用的代码比图形方法用的代码要少。使用图形控件需要注意以下问题: (1) 图形控件不能在运行时获得焦点; (2) 不能作为其他控件的容器; (3) 不能出现在其他控件之上,除非是容器控件,如图片框。,用Pset方法能够在屏幕上画出一个点。 例如: Pset (100,150) 上述语句的作用是在窗体上(100,150)处画出一个点。 Pset方法的一般格式为: 对象名.Pset(x,y),颜色,12.3 用Pset方法画点,如不作声明,则画出的点的颜色就是对象的前景色 (ForeColor属性值)。 如果需要指定其他颜色,也可以在Pset方法中指定。颜色可以用RGB函数指定。 例如: Pset(500,1000),RGB(255,0,255) RGB是一个颜色函数,“R”代表Red(红),“G”代表Green(绿),“B”代表Blue(蓝)。RGB函数有三个参数,分别代表红、绿、蓝的比例,每个参数的值为0255。RGB(255,0,255)含义是无绿色的成分,红和蓝成分相等,效果为紫红色。这3个参数不同值的组合可以产生多种颜色。表12.2(见书248页)列出了一些颜色的组合。,颜色也可以用QBColor函数来表示。 学过BASIC或QBASIC语言的读者已经知道, 可以用颜色号015代表16种颜色。 Visual Basic中用QBColor(i)代表一种颜色,见表12.3(见书248页)。 【例3】在窗体中随机地显示若干彩色的点。窗体上有两个命令按钮: “画点”和“退出”按钮。单击“画点”按钮,执行如下事件过程。单击“退出”按钮,结束程序的运行。 画点的过程如下:,Private Sub cmdPoint_Click() For i = 1 To 3000 r = Int(256 * Rnd) g = Int(256 * Rnd) b = Int(256 * Rnd) x = Rnd * Width y = Rnd * Height PSet (x, y), RGB(r, g, b) Next End Sub,【例4】要求在单击“开始”按钮后, 在窗体上画出一个圆,再将此圆抹去, 接着画出一个半径稍大的同心圆如此一共画出16个圆。 程序代码如下: Private Sub cmdStart_Click(),c = 1 r = 100 Do For i = 0 To 2 * 3.141596 Step 0.01 y = Sin(i) * r sin(a)*半径=y坐标 x = Cos(i) * r PSet (x+1600, y+1600), QBColor(c) For j = 1 To 2000 Next j Next i For i = 0 To 2 * 3.141596 Step 0.01 y = Sin(i) * r x = Cos(i) * r PSet (x +1600, y +1600), QBColor(15) For j = 1 To 2000 Next j Next I c = c + 1 r = r + 100 Loop Until c = 16,为了在两点之间绘制一条直线,除了使用直线控件外,Visual Basic还提供了Line方法。 Line方法的一般格式为 对象.LineStep(x1,y1)-Step(x2,y2),颜色,用Line方法画线和矩形 1 用Line方法绘制直线,【例5】在窗体上画一个名称为cmdPaint 的命令按钮。当单击这个命令按钮时,执行程序,用Line方法画一个如图所示的图形。 这些直线具有相同的终点坐标,起点坐标在水平方向是相同的。根据这个特点,可以使用循环画出图形。程序如下:,图6,Private Sub cmdPaint_Click() Dim i As Integer DrawWidth = 2 ForeColor = QBColor(4) For i = 0 To 6000 Step 500 Line (i, 800)-(2800, 2900) Next i End Sub,使用Line方法能够绘制矩形。 具体方法很简单,只要在Line方法中加一个参数B即可,B的含义是Box(盒状)。 例如: Line (800, 800)-(3000, 2000),B 此语句执行的结果如图7所示,12.4.2 用Line方法绘制矩形,图12.7,画矩形的一般格式为: 对象.LineStep(x1,y1)-Step(x2,y2) ,颜色,BF (x1,y1)与(x2,y2)是所画矩形的左上角和右下角的坐标,参数B表示要画一个矩形,参数F是指画一个实心的矩形。 除了可以用“颜色”对图形进行填充外,还可以用以前介绍过的FillStyle属性填充图案。 【例6】为矩形填充不同的图案。设计用户界面如,图12.8,在窗体上添加图片框,其大小只比窗体略小一点。 运行时,单击图片框,将执行下面的事件过程: Private Sub Picture1_Click() Picture1.BackColor = QBColor(0) For i = 0 To 7 Picture1.FillStyle = i Picture1.FillColor = QBColor(i + 2) i 1 = i + 1 Picture1.Line (300 * i1, 400 * i1)-(110 * i1, 220 * i1), QBColor(12), B Next i End Sub 程序运行的结果如图12.9所示。,图12.9,画圆的一般格式为: 对象.Circle Step (x,y),半径,颜色 对象指窗体、图片框等, Step后面的一对数字表示相对于当前坐标的位移量。,用Circle方法画圆、椭圆、圆弧及扇形 1 用Circle方法绘制图,【例7】在窗体上画圆, 并由用户来选择圆的颜色及填充的式样。 下面编写事件过程中, 当单击命令按钮“画圆”时,执行以下事件过程:,图12.10,Private Sub cmdCircle_Click() FillStyle = Val(sty.Text) col = Val(col.Text) x = Width y = Height For i = 1 To 10 r = (x * 0.1) * Rnd Circle (Rnd * x, Rnd * y), r, QBColor(col) Next i End Sub,单击“清除”按钮时应执行的过程如下: Private Sub cmdCls_Click() Cls sty.Text= col.Text= End Sub 单击“结束”按钮时应执行的过程如下: Private Sub cmdEnd_Click() End End Sub,在cmdCls_Click()过程中使用了cls方法 来清除窗体,此方法的一般格式为: 对象.cls 对象指窗体、图片框等,默认为窗体。 程序运行结果如图12.11所示,它是连续单击几次“画圆”命令按钮(而未单击“清除”按钮)的执行结果。,图12.11,用Circle方法绘制椭圆的一般格式为: 对象. Circle Step (x,y),颜色,纵横比 【例12.8】 在窗体上画一个图片框(如图12.12所示)。编写一个程序,单击图片框后在其上画出若干个形状和颜色各异的椭圆。 过程代码如下:,12.5.2 用Circle方法绘制椭圆,图12.12,Private Sub Picture1_Click() x = Picture1.Width y = Picture1.Height Picture1.FillStyle = 0 Picture1.FillColor = QBColor(12) For i = 1 To 10 r = (x * 0.1) * Rnd b = i * 0.3 Picture1.Circle (x * Rnd, y * Rnd), r, QBColor(i), , , b Next i End Sub 运行结果如图12.13所示。,图12.13,圆周的一部分就是圆弧,如果从圆心连接 两条直线到圆弧的两端,就是一个扇形。用画圆的方法Circle来画圆弧及扇形非常容易,只要加上起始角和终止角即可。 例如: Circle (2500, 2000), 1000, , 3.14159 / 2, 0 Circle Step(200, 300), 800, , -1, -4 Circle (800, 900), 500, QBColor(12), 0.5, -2.9 坐标分布如图12.14所示。,12.5.3 用Circle方法绘制圆弧及扇形,图12.14,画圆弧的一般格式为: 对象.Circle Step (x,y),半径,颜色 ,起始角,终止角 当纵横比为1时,画出来的是一段圆弧,当纵横比不等于1时,画出一段椭圆弧。 下面举例说明圆弧及扇形的画法。 【例12.9】单击窗体,在窗体上显示若干圆弧。 事件过程如下:,Private Sub Form_Click() pi = 3.1415926 angle1 = 0 c = 1 DrawWidth = 1 For r = 800 To 1800 Step 200 angle2 = (angle2 + (pi / 2) Mod (2 * pi) Circle (2500, 1800), r, QBColor(c), angle1, angle2 angle1 = angle1 + (pi / 4) c = c + 1 DrawWidth = DrawWidth + 1 Next r End Sub,程序开始运行后,单击窗体, 显示出6个颜色不同、位置不同、 宽度不同的圆弧。运行结果如图12.15所示。 如果将程序中的“Circle (2500, 1800), r, QBColor(c), angle1, angle2”改成“Circle (2500, 1800),r, QBColor(c), angle1, angle2,2”,就可让纵横比不等于1,所画的弧都变为椭圆弧,结果如图12.16所示。,图12.15,图12.16,使用Visual Basic提供的PaintPicture方法, 可从一个窗体或图形框控件中向另一个对象复制一个矩形区域的像素。 【例12.10】编写一个程序,将图片框中的一个图形复制到窗体上。 首先建立一个如图12.17所示的窗体。窗体上有一个名称为picSource的图片框,该图片框的Picture属性设置了一个小图片。,12.6 使用PaintPicture方法,图12.17,当单击窗体时,将图片框picSource中的图片 复制、放大到窗体上。程序如下: Private Sub Form_Click() Form1.PaintPicture picSource.Picture, 0, 0, ScaleWidth, ScaleHeight End Sub PaintPicture方法的语法格式如下: .PaintPictureHJ ,dx,dy,dh,sx,sy,sw,sh 其作用是将“源对象”上的图片放到“目标对象”上。 ScaleWidth, ScaleHeight 拉伸,该方法的各参数的含义如下。 dx,dy: 目标区域左上角的坐标, 可以是目标控件的任意位置。 dw,dh: 目标区域的宽和高。 sx,sy: 要传送图形的矩形区域的左上角坐标。 sw,sh: 要传送图形的矩形区域的宽和高。 程序运行效果如图12.18所示。,图12.18,1. AutoRedraw属性 每个窗体和图片框都有AutoRedraw属性。AutoRedraw属性的功能是自动重新绘制窗体或图片框。 下面通过一个例题观察AutoRedraw属性的作用。,12.7 窗体和控件的图形属性,【例11】建立一个工程文件, 包括两个窗体Form1和Form2。 当单击Form1时,在窗体上画一个实心圆, 同时显示Form2。 按照题目的要求,在Form1的Form_Load事件过程中添加如下程序代码: Private Sub Form_Click() FillStyle = 0 Circle (800, 800), 500 Form2.Show End Sub 运行程序如图所示,同时显示Form2。,将Form2移动到与Form1重叠的位置,然后再将Form2移开。此时,Form1上被遮盖部分的图形没有恢复显示, AutoRedraw属性设置为ture则可以重绘 图19,图20,2. CurrentX、
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 重庆青年职业技术学院单招《物理》题库检测试题打印新版附答案详解
- 物流路径创新创业项目商业计划书
- 智能语音交互设计平台创新创业项目商业计划书
- 自考公共课考前冲刺练习试题附完整答案详解【全优】
- 电子书内容试听转化漏斗创新创业项目商业计划书
- 自考专业(护理)练习题(考点提分)附答案详解
- 注册公用设备工程师考前冲刺练习附参考答案详解【突破训练】
- 自考公共课通关考试题库及参考答案详解【B卷】
- 2025法硕考研真题客观题解析指南~题源Day32专项合同服务
- 2025年北京车牌租赁及转让市场监测合作协议样本
- 四年级心理健康上册全册教案
- 印尼劳动法中文版
- 石油钻采设备与工具专业标准分类
- 中式烹调师高级技师试题与答案
- GB/T 3622-1999钛及钛合金带、箔材
- GB/T 20160-2006旋转电机绝缘电阻测试
- FZ/T 73044-2012针织配饰品
- 组织工程及再生医学基本课件
- 智慧矿山为未来煤矿发展赋能课件
- 旅游相册:宁夏旅游课件
- 药物化学(全套课件)
评论
0/150
提交评论