Ch10 图形操作.ppt_第1页
Ch10 图形操作.ppt_第2页
Ch10 图形操作.ppt_第3页
Ch10 图形操作.ppt_第4页
Ch10 图形操作.ppt_第5页
已阅读5页,还剩83页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

2020年1月2日星期四 Ch10图形操作 大学计算机基础 Hemingrui 1 78 第10章图形操作 图形可以为应用程序的界面增加情趣和艺术效果 更形象地表达各种事物或题解结果 VisualBasic6 0具有丰富的图形功能 程序设计者既可以使用图形控件进行图形操作 也可以调用图形方法绘制丰富多彩的图形本章首先介绍与绘图有关的基础知识 如坐标系 绘图的颜色等 然后围绕图形控件 图形方法等介绍图形设计的基本方法和技巧 2020年1月2日星期四 Ch10图形操作 大学计算机基础 Hemingrui 2 78 教学要求 理解VisualBasic中坐标系 颜色的概念掌握用Shape控件画矩形 正方形 圆 椭圆 的方法 用Line控件画直线的方法掌握常用的绘图方法Pset方法 Line方法 Circle方法的使用了解与绘图有关的常用属性 事件和方法理解图层的概念和应用本章重点是VisualBasic中坐标系 绘图方法的使用 本章难点是用户自定义坐标系 2020年1月2日星期四 Ch10图形操作 大学计算机基础 Hemingrui 3 78 第1节坐标系 VisualBasic有两种坐标系 即系统标准坐标系和用户自定义坐标系 坐标系的坐标单位默认是缇 twips 坐标系是一个二维网格 可定义屏幕上 窗体中或其它容器中 如图片框或Printer对象 的位置每一个图形操作 包括调整大小 移动和绘图 都要使用绘图区或容器的坐标系 2020年1月2日星期四 Ch10图形操作 大学计算机基础 Hemingrui 4 78 一 缺省坐标系统 VisualBasic中的容器对象 都有一套默认的坐标系统 其坐标原点 0 0 总是在其左上角 X轴的正方向水平向右 Y轴的正方向垂直向下 默认坐标的刻度单位是缇 twips 所谓容器对象 就是可以放置其他对象的对象 如在窗体中可以绘制各种控件 窗体是容器 VisualBasic中能作为容器的对象 有窗体 图片框 框架 打印机Printer 系统对象Screen 屏幕 也是一个容器 每个容器都有一个坐标系 构成一个坐标系 需要三个要素 坐标原点 坐标度量单位 坐标轴的长度与方向 坐标度量单位由容器对象的ScaleMode属性决定 2020年1月2日星期四 Ch10图形操作 大学计算机基础 Hemingrui 5 78 缺省坐标系统 以下规则用于VisualBasic坐标系统 当移动控件或调整控件的大小时 使用控件容器的坐标系统 如果直接在窗体上绘制对象时 窗体就是容器 如果在框架或图片框里绘制控件时 框架或控件是容器所有的图形和Print方法 使用容器的坐标系统 例如 那些在图片框里绘制控件的语句 使用的是控件的坐标系统一些用来调整窗体大小或移动窗体的语句 用缇来表示窗体的位置和大小当创建用来调整窗体大小或移动窗体的代码时 应先检查Screen对象的Height属性和Width属性 以确保窗体在屏幕上大小合适屏幕的左上角总是 0 0 任何容器的缺省坐标系统 都是由容器的左上角 0 0 坐标开始 2020年1月2日星期四 Ch10图形操作 大学计算机基础 Hemingrui 6 78 二 用户自定义坐标系统 在VisualBasic中 坐标系统坐标轴的方向 原点和坐标系统的刻度单位 都可以根据需要改变 建立自己的坐标系统 1 设置坐标系统的刻度单位用户可用ScaleMode属性设置坐标系统的刻度单位 2020年1月2日星期四 Ch10图形操作 大学计算机基础 Hemingrui 7 78 用户自定义坐标系统 说明 当设置容器对象 例如 窗体或图片框 的ScaleMode属性值 0 将使容器对象的ScaleLeft和ScaleTop自动设置为0 ScaleHeight和ScaleWidth的度量单位也将发生改变用ScaleMode属性只能改变刻度单位 不能改变坐标原点及坐标轴的方向 2020年1月2日星期四 Ch10图形操作 大学计算机基础 Hemingrui 8 78 用户自定义坐标系统 2 使用Scale属性建立自己的坐标系 容器对象的Scale属性共有4个 即ScaleLeft ScaleTop ScaleWidth ScaleHeight 可使用这4个Scale属性来创建用户自定义坐标系统及刻度单位 2020年1月2日星期四 Ch10图形操作 大学计算机基础 Hemingrui 9 78 用户自定义坐标系统 1 重新定义坐标原点 属性ScaleTop ScaleLeft的值用于控制对象左上角坐标 所有对象的ScaleTop ScaleLeft属性的缺省值为0 坐标原点在对象的左上角 可以通过ScaleTop ScaleLeft属性来重定义坐标原点 0 0 X Y ScaleLeft 0ScaleTop 0 缺省坐标系统 X Y n m 0 0 ScaleLeft nScaleTop m 坐标平移 2020年1月2日星期四 Ch10图形操作 大学计算机基础 Hemingrui 10 78 用户自定义坐标系统 2 重定义坐标轴方向和度量单位 属性ScaleWidth ScaleHeight的值可确定对象坐标系X轴与Y轴的正向及最大坐标值 缺省时其值均大于0 此时 X轴的正向向右 Y轴的正向向下 对象右下角坐标值为 ScaleLeft ScaleWidth ScaleTop ScaleHeight 如果ScaleWidth的值小于0 则X轴的正向向左 如果ScaleHeight的值小于0 则Y轴的正向向上 X轴与Y轴的度量单位分别为 1 ScaleWidth 1 ScaleHeight 2020年1月2日星期四 Ch10图形操作 大学计算机基础 Hemingrui 11 78 用户自定义坐标系统 例1 将窗体的坐标系统的原点定义在其中心 X轴的正向向右 Y轴的正向向上 窗体高与宽分别为200和300单位长度通过ScaleTop ScaleLeft ScaleWidth和ScaleHeight属性实现 Form1 ScaleLeft 150Form1 ScaleTop 100Form1 ScaleWidth 300Form1 ScaleHeight 200 X Y 0 0 150 100 150 100 自定义的笛卡尔坐标系 2020年1月2日星期四 Ch10图形操作 大学计算机基础 Hemingrui 12 78 用户自定义坐标系统 3 利用Scale方法设置坐标系 object Scale x1 y1 x2 y2 用以定义Form PictureBox或Printer的坐标系统 x1 y1 x2 y2 指示定义对象左上角 右下角的水平 X轴 和垂直 Y轴 坐标 两组参数 要么都选择 要么都省略ScaleWidth x2 x1 ScaleHeight y2 y1 Scale方法使用户能够将坐标系统重置到所选择的任意刻度 Scale对运行时的图形语句以及控件位置的坐标系统都有影响如果使用不带参数的Scale 两组坐标都省略 重置默认坐标系统 例2 例1的笛卡尔坐标系可由Scale方法实现如下Form1 Scale 150 100 150 100 2020年1月2日星期四 Ch10图形操作 大学计算机基础 Hemingrui 13 78 第2节颜色 VisualBasic提供了BackColor ForeColor BorderColor等颜色属性来设置对象的颜色 另外还提供了QBColor RGB等颜色函数来指定颜色值 并且可以使用调色板来指定对象的某种颜色值进行设置VisualBasic用一个四字节的长整型数来代表颜色值 其中最低的3个字节分别对应于构成颜色的三原色 即红色 绿色和蓝色 用十六进制表示 则每个字节的取值范围从0 FF 十进制0 255 2020年1月2日星期四 Ch10图形操作 大学计算机基础 Hemingrui 14 78 一 在设计阶段设置颜色 对象的属性窗口与颜色有关的属性的名称都带有 Color 如BackColor ForeColor 在属性值处有一个下拉箭头 单击就会弹出颜色对话框 调色板系统颜色 2020年1月2日星期四 Ch10图形操作 大学计算机基础 Hemingrui 15 78 二 在运行阶段设置颜色 使用RGB函数 使用QBColor函数 使用颜色常量 使用颜色的十六进制表示值 使用系统颜色 1 使用RGB函数RGB函数返回一个长整型 Long 的颜色值RGB red green blue red green blue分别为0 255之间的整数 0表示亮度最低 255表示亮度最高 如果参数超过255 则当作255处理 例1 将窗体的背景色设置为红色Form1 BackColor RGB 255 0 0 2020年1月2日星期四 Ch10图形操作 大学计算机基础 Hemingrui 16 78 在运行阶段设置颜色 2 使用QBColor函数QBColor函数可返回一个Long值 用来表示所对应颜色值的RGB颜色码 QBColor color color一个界于0 15的整型 代表16种颜色 例2 Form1 BackColor QBColor 4 QBColor函数 2020年1月2日星期四 Ch10图形操作 大学计算机基础 Hemingrui 17 78 在运行阶段设置颜色 3 使用颜色常量在VisualBasic系统中已经预先定义了常用颜色的颜色常数 在 对象浏览器 中查询常数列表 例3 将窗体的背景色设置为红色Form1 BackColor vbRed 颜色常数 2020年1月2日星期四 Ch10图形操作 大学计算机基础 Hemingrui 18 78 在运行阶段设置颜色 4 使用颜色的十六进制表示值用户可以直接使用该十六进制数为颜色属性赋值 该十六进制数表示为 例4 将窗体的背景色设置为红色Form1 BackColor H000000FF 2020年1月2日星期四 Ch10图形操作 大学计算机基础 Hemingrui 19 78 在运行阶段设置颜色 5 使用系统颜色VisualBasic允许在应用程序中直接引用系统的颜色来设置窗体和控件的颜色属性 如果改变了系统颜色 应用程序中被引用的相应颜色也会随着变化 在VisualBasic中 系统颜色有两种表示方法 用系统内部常量表示用十六进制的四字节长整型数表示用十六进制表示的系统颜色值的第1个字节为80 其余字节指定的是一种系统颜色 例如 选择 活动标题栏 颜色 所产生的颜色值为 H80000002 而选择 非活动边框 的颜色 所产生的颜色值为 H8000000B 2020年1月2日星期四 Ch10图形操作 大学计算机基础 Hemingrui 20 78 第3节图形控件 图形控件用于在容器对象上绘制特定形状的图形 如圆 直线等 本节介绍形状控件 Shape 和线条控件 Line 两个控件的使用 2020年1月2日星期四 Ch10图形操作 大学计算机基础 Hemingrui 21 78 一 形状控件 Shape 使用Shape控件可在窗体 框架或图片框中创建矩形 正方形 椭圆形 圆形 圆角矩形或圆角正方形等图形 Shape决定显示不同的形状 其取值及含义如下 2020年1月2日星期四 Ch10图形操作 大学计算机基础 Hemingrui 22 78 形状控件 Shape BackStyle决定形状的背景是否为透明 默认值为0 透明 ex10 3 01 例1 通过设置Shape和BackStyle 绘制不同的图形和不同的风格 2020年1月2日星期四 Ch10图形操作 大学计算机基础 Hemingrui 23 78 二 线条控件 Line 线条控件用于修饰窗体和显示直线 它可以显示水平线 垂直线 对角线 对于线条控件来说 程序运行时最重要的属性是X1 Y1 X2 Y2属性 这些属性决定着线条显示时的位置坐标X1 设置 返回线条控件在X轴线方向上的起始点X2 设置 返回线条控件在X轴线方向上的终止点Y1 设置 返回线条控件在Y轴线方向上的起始点Y2 设置 返回线条控件在Y轴线方向上的终止点 BorderColor返回或设置图形边框或线条的颜色BorderStyle返回或设置线条的样式 点线 点划线等 BorderWidth返回或设置图形边框或线条的宽度 2020年1月2日星期四 Ch10图形操作 大学计算机基础 Hemingrui 24 78 线条控件 Line BorderStyle属性的设置值 2020年1月2日星期四 Ch10图形操作 大学计算机基础 Hemingrui 25 78 线条控件 Line 注意 当属性BorderStyle 0 透明 时 将忽略BorderColor和BorderWidth属性的设置值 当BorderWidth 1时 BorderStyle 1 实线 和BorderStyle 6 内收实线 看上去效果相同 为了比较这两个值的区别 在窗体上画一个Shape控件Shape1 设置其BorderWidth 20 BorderColor为黄色 BorderStyle 1 复制该控件 形成另一个控件Shape2 将Shape2的BorderStyle属性设置为6 用鼠标单击这两个控件时可以看出其边框的位置 ex10 3 02 BorderStyle 1 BorderStyle 6 2020年1月2日星期四 Ch10图形操作 大学计算机基础 Hemingrui 26 78 图形控件 例3 设计一个简单的秒表 ex10 3 03 2020年1月2日星期四 Ch10图形操作 大学计算机基础 Hemingrui 27 78 图形控件 代码设计 在窗体模块的通用声明段声明变量arph 用于表示秒针旋转角度Dimarph 表示秒针旋转角度 用弧度表示 PrivateSubForm Load Timer1 Enabled False 关闭定时器Timer1 Interval 1000 设定时时间为1秒Picture1 Scale 1 1 1 1 定义图片框坐标系Line1 X1 0 将秒针起点移动到原点Line1 Y1 0Line1 X2 0 将秒针的另一端移动到正上方 指向0Line1 Y2 0 7arph 0 旋转角度为0EndSub 2020年1月2日星期四 Ch10图形操作 大学计算机基础 Hemingrui 28 78 图形控件 PrivateSubCommand1 Click Timer1 Enabled True 启动定时器EndSubPrivateSubTimer1 Timer 每隔1秒旋转一次秒针arph arph 3 14159265 30 旋转角度增加6 以下语句将秒针的另一端移动到旋转后的位置Line1 Y2 0 7 Cos arph Line1 X2 0 7 Sin arph EndSubPrivateSubCommand2 Click 停止 按钮Timer1 Enabled False 关闭定时器EndSub 2020年1月2日星期四 Ch10图形操作 大学计算机基础 Hemingrui 29 78 图形控件 例4 小球在窗体内沿直线移动 但不能移出窗体外 当移动到窗体的上下 左右边时 将弹回继续移动 在移动的过程中可以改变小球的颜色 ex10 3 04 2020年1月2日星期四 Ch10图形操作 大学计算机基础 Hemingrui 30 78 第4节绘图方法 使用容器对象的PSet Line和Circle方法 可以更加灵活地在容器中绘制各种图形 这些绘图方法比图形控件绘图要方便得多 2020年1月2日星期四 Ch10图形操作 大学计算机基础 Hemingrui 31 78 一 PSet方法 在容器对象的指定位置用特定的颜色画点 object PSet Step x y color x y 为所画点的坐标Step表示采用当前作图位置的相对值colorLong 长整型数 为该点指定的RGB颜色 如果它被省略 则使用当前的ForeColor属性值 可用RGB函数或QBColor函数指定颜色 采用背景颜色 BackColor 可清除某个位置上的点执行PSet时 CurrentX和CurrentY属性被设置为参数指定的点用来PSet方法可画任意曲线点的大小取决于容器对象的DrawWidth属性值 2020年1月2日星期四 Ch10图形操作 大学计算机基础 Hemingrui 32 78 PSet方法 例1 利用PSet方法在窗体内画一条红色的正对角线 PrivateSubForm Load Dimx y Form1 ShowForx 1ToForm1 ScaleWidthy x ScaleHeight ScaleWidthPSet x y vbRedNextxEndSub ex10 4 01 2020年1月2日星期四 Ch10图形操作 大学计算机基础 Hemingrui 33 78 PSet方法 例2 编写代码实现 运行时单击窗体用PSet方法在窗体上绘制一条 0 360 的正弦曲线 ex10 4 02 要绘制的曲线在 0 360 之间 可以定义窗体的水平坐标从左到右为0到360 由于正弦函数的取值范围为 1 1 因此可以设置垂直坐标从下到上为 1到1 PrivateSubForm Click Dimx y Scale 0 1 360 1 定义坐标系DrawWidth 2 定义点的大小Forx 0To360y 0 9 Sin x 3 1415926 180 PSet x y vbRed 在窗体的坐标 x y 处画红色点NextxEndSub 2020年1月2日星期四 Ch10图形操作 大学计算机基础 Hemingrui 34 78 PSet方法 例3 用Pset方法绘制阿基米德螺线 使用参数方程确定坐标点 x i Cos i y i Sin i 创建自定义坐标系统Scale 15 15 15 15 画X轴和Y轴Line 0 14 0 14 Line 14 5 0 14 5 0 ex10 4 03 2020年1月2日星期四 Ch10图形操作 大学计算机基础 Hemingrui 35 78 二 Line方法 Line方法用于画直线或矩形 其语法格式 object Line Step x1 y1 Step x2 y2 color B F x1 y1 线段的起点坐标或矩形的左上角坐标 如果省略 则表示以当前坐标点 CurrentX CurrentY 为起点 x2 y2 线段的终点坐标或矩形的右上角坐标B画矩形F用画矩形的颜色来填充矩形 默认F则矩形的填充由FillColor和FillStyle属性决定 各参数可根据实际要求进行取舍 但如果舍去的是中间参数 参数的位置分隔符不能舍去画连续直线时 可以将前一条直线的终点作为后一条直线的起点 线的宽度取决于容器对象的DrawWidth属性值 2020年1月2日星期四 Ch10图形操作 大学计算机基础 Hemingrui 36 78 Line方法 例4 Line方法示例 Line 1000 1200 1600 2000 画一条从 1000 1200 到 1600 2000 点的直线 Line 1600 2000 从当前位置 由CurrentX CurrentY决定 画到 1600 2000 Line 600 1000 Step 600 200 出发点是 600 1000 终点是向X轴正向走600 向Y轴正向走200的点等同于 Line 600 1000 1200 1200 Line 80 160 600 800 B 画一个左上角在 80 160 右下角在 600 800 的矩形 注意在color参数省略时 逗号并不省略 Line 80 160 Step 200 280 RGB 255 0 0 BF 用红色从 80 160 到 280 440 画一个实心的矩形 实际上只画了一点 1600 2000 ex10 4 04 2020年1月2日星期四 Ch10图形操作 大学计算机基础 Hemingrui 37 78 Line方法 例5 利用Line方法在一个窗体上画坐标轴与坐标刻度 ex10 4 05 定义坐标系 110 110 110 110 X轴 105 0 105 0 y轴 0 105 0 105 X轴上标记坐标刻度 i 100 100Step20画直线 i 7 i 0 在 i 5 5 显示刻度值i 10Y轴上标记坐标刻度 i 100 100Step20画直线 7 i 0 i 在 15 i 5 显示刻度值i 10 2020年1月2日星期四 Ch10图形操作 大学计算机基础 Hemingrui 38 78 Line方法 例6 利用Line方法在一个窗体上画随机射线 随机函数Rnd产生的值在 0 0 5 和 0 5 1 之间的分布是相同的 根据坐标系由随机函数产生x坐标与y坐标分布在第一象限 为了得到其他3个象限的坐标点 可根据Rnd 0 5取相反的值 然后用Line 0 0 x y 画线 ex10 4 06 2020年1月2日星期四 Ch10图形操作 大学计算机基础 Hemingrui 39 78 Line方法 例7 使用Line方法绘制艺术图案 使画线的起始坐标 x1 y1 和终点坐标 x2 y2 根据三角函数表达式的规律变化 可以绘制各种风格的图形 ex10 4 07 本例使坐标 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 之间 2020年1月2日星期四 Ch10图形操作 大学计算机基础 Hemingrui 40 78 Line方法 界面设计 在窗体上画一个图片框Picture1 设运行时单击图片框在图片框内画图代码设计 需要根据以上表达式估算x1 y1 x2 y2的值由于cos函数值在 1到1之间 根据表达式可以看出 f的值在50到150之间根据f的取值范围和sin cos函数的取值范围可以推导出 x坐标值在170到470之间y坐标的值在50到350之间据此 可以用scale方法定义图片框的坐标范围 其宽度和高度应大于或等于x和y的取值范围 以保证所画的线条落在图片框内 2020年1月2日星期四 Ch10图形操作 大学计算机基础 Hemingrui 41 78 Line方法 PrivateSubPicture1 Click Constpi 3 14159265 d 100Dima f Dimx1 y1 x2 y2 使用Scale方法定义坐标系统Picture1 Scale 170 50 470 350 绘制图形Fora 0To4 piSteppi 100f d 1 1 2 Cos 2 5 a 计算坐标x1 320 f Cos a y1 200 f Sin a x2 320 f Cos a pi 5 y2 200 f Sin a pi 9 Picture1 Line x1 y1 x2 y2 vbRedNextaEndSub 2020年1月2日星期四 Ch10图形操作 大学计算机基础 Hemingrui 42 78 Line方法 例8 使用Line方法绘制矩形的功能画一个黑白格相间的棋盘 ex10 4 08 界面设计 设棋盘直接画在窗体上 运行时单击窗体画出棋盘代码设计 本例假设棋盘有10行10列 因此可以首先用Scale方法将窗体的高度和宽度划分成10个单位 为了实现黑白相间的效果 在代码中引入一个标志变量flag 当flag 1时 用白色画矩形 当flag 1时 用黑色画矩形 在Line方法中使用BF参数指定画填充矩形 2020年1月2日星期四 Ch10图形操作 大学计算机基础 Hemingrui 43 78 Line方法 PrivateSubForm Click Dimflag i j x1 x2 y1 y2 CScale 0 0 10 10 定义窗体宽度和高度为10个单位flag 1Fori 0To9 外循环每执行一轮 由内循环画出棋盘的一列图案flag flag 1 Forj 0To9 内循环每执行一次 划出第i 1列的第j 1格x1 i y1 jx2 i 1 y2 j 1 根据flag的值设置画图颜色Ifflag 1ThenC vbWhiteElseC vbBlackEndIfLine x1 y1 x2 y2 C BF 画矩形flag flag 1 NextjNextiEndSub 2020年1月2日星期四 Ch10图形操作 大学计算机基础 Hemingrui 44 78 三 Circle方法 Circle方法用于画圆 椭圆 圆弧和扇形 其语法格式 object Circle Step x y radius color start end aspect x y 为圆心坐标 Step表示采用当前作图位置的相对值radius表示半径color表示所画图形的颜色 X轴正向为基准方向为逆时针 aspect控制画椭圆的长短轴比率 默认值为1 即画圆 2020年1月2日星期四 Ch10图形操作 大学计算机基础 Hemingrui 45 78 Circle方法 例9 Circle方法示例 Circle 15 15 10 Circle 15 15 10 2 Circle 15 15 10 vbRed 0 7 2 1 Circle 15 15 10 2 0 7 例10 编程画出如下的实心椭圆和空心椭圆 FillStyle 0 实心FillStyle 1 透明 ex10 4 10 2020年1月2日星期四 Ch10图形操作 大学计算机基础 Hemingrui 46 78 Circle方法 例11 编程随机产生很多颜色圆 实现气泡的效果 随机产生以下数据 x ScaleWidth Rnd圆心的x坐标y ScaleHeight Rnd圆心的y坐标r 120 Rnd半径c Int 16 Rnd 颜色Circle x y r QBColor c ex10 4 11 2020年1月2日星期四 Ch10图形操作 大学计算机基础 Hemingrui 47 78 Circle方法 例12 使用Circle方法绘制如下图所示的艺术图案 该艺术图案由一系列的圆组成 这些圆的圆心在另外一个固定圆 轨迹圆 的圆周上 ex10 4 12 分析 使用缺省的坐标系统 设轨迹圆的圆心坐标为 x0 y0 将该圆30等分 以圆周上的每一个等分点为圆心画圆 圆心的坐标为 x0 r Cos i y0 r Sin i 其中 i为等分点和 x0 y0 的连线与x轴正方向之间的夹角 以弧度为单位 r为轨迹圆的半径 2020年1月2日星期四 Ch10图形操作 大学计算机基础 Hemingrui 48 78 Circle方法 PrivateSubForm Click Constpi 3 14159265Dimx y x0 y0 c r pace Clsr ScaleHeight 4 将窗体的1 4高作为轨迹圆的半径 将窗体的中心位置设置为轨迹圆的圆心坐标x0 ScaleWidth 2y0 ScaleHeight 2pace 2 pi 30 将圆周30等分Fori 0To2 piSteppacex x0 r Cos i 求轨迹圆圆周上每一个等分点的坐标y y0 r Sin i c Int 16 Rnd 以轨迹圆圆周上的点为圆心 以r 0 8为半径画圆Circle x y r 0 8 QBColor c NextiEndSub 2020年1月2日星期四 Ch10图形操作 大学计算机基础 Hemingrui 49 78 Circle方法 例13 设置一个模拟行星绕太阳运动的程序 编程分析 行星运动的椭圆方程为 x x0 rx cos alfa y y0 ry sin alfa 其中 x0 y0为椭圆圆心坐标 rx为水平半径 ry为垂直半径 alfa为圆心角 在窗体上引入2个合适大小的形状控件Shape1 Shape2 将它们的Shape属性设置为圆形 其中Shape1填充为红色 代表太阳 Shape2填充为蓝色 代表行星 用定时器控件Timer1来控制行星运行速度 将Timer1的时间间隔设置为0 1秒 ex10 4 13 2020年1月2日星期四 Ch10图形操作 大学计算机基础 Hemingrui 50 78 Circle方法 例14 在图片框中画3个扇形和1个小圆 配合定时器使扇形旋转起来 ex10 4 14 界面设计 在窗体上画一个图片框控件Picture1和一个定时器控件Timer1 设置Timer1控件的Interval 100 Enabled False 2020年1月2日星期四 Ch10图形操作 大学计算机基础 Hemingrui 51 78 Circle方法 代码设计 首先在窗体模块的通用声明段声明变量alpha1 用于保存第1个扇形的起始角度 其他两个扇形的起始角由alpha1推出 每个扇形的终止角由其起始角加上60得出为程序的通用性 定义常量PI 的值ConstPI 3 1415926Dimalpha1 2020年1月2日星期四 Ch10图形操作 大学计算机基础 Hemingrui 52 78 Circle方法 PrivateSubForm Load ShowPicture1 FillStyle 0 将FillStyle设置为0以便给扇形填充颜色Picture1 FillColor vbBlue 设置图形填充颜色为蓝色Picture1 Scale 1 1 1 1 定义坐标系alpha1 30 设第一个扇形的起始角alpha2 alpha1 60 设第一个扇形的终止角Picture1 Circle 0 0 0 7 vbBlue alpha1 PI 180 alpha2 PI 180 画第一个扇形alpha3 150 设第二个扇形的起始角alpha4 alpha3 60 设第二个扇形的终止角Picture1 Circle 0 0 0 7 vbBlue alpha3 PI 180 alpha4 PI 180 画第二个扇形alpha5 270 设第三个扇形的起始角alpha6 alpha5 60 设第三个扇形的终止角Picture1 Circle 0 0 0 7 vbBlue alpha5 PI 180 alpha6 PI 180 画第三个扇形Picture1 Circle 0 0 0 1 在中心处画一个小圆EndSub 2020年1月2日星期四 Ch10图形操作 大学计算机基础 Hemingrui 53 78 Circle方法 PrivateSubPicture1 Click Timer1 Enabled TrueEndSub 在定时器的Timer的事件过程中实现每隔100ms重新画图 让每个扇形的画图角度增加5 产生旋转的效果 由于使用Circle画扇形时 指定的起始角和终止角不能超过360 2020年1月2日星期四 Ch10图形操作 大学计算机基础 Hemingrui 54 78 Circle方法 PrivateSubTimer1 Timer Picture1 Clsalpha1 alpha1 5 Mod360Ifalpha1 0Thenalpha11 0 001Elsealpha11 alpha1alpha2 alpha1 60 Mod360Ifalpha2 0Thenalpha12 0 001Elsealpha12 alpha2Picture1 Circle 0 0 0 7 vbBlue alpha11 PI 180 alpha12 PI 180alpha3 alpha2 60 Mod360Ifalpha3 0Thenalpha21 0 001Elsealpha21 alpha3alpha4 alpha3 60 Mod360Ifalpha4 0Thenalpha22 0 001Elsealpha22 alpha4Picture1 Circle 0 0 0 7 vbBlue alpha21 PI 180 alpha22 PI 180alpha5 alpha4 60 Mod360Ifalpha5 0Thenalpha31 0 001Elsealpha31 alpha5alpha6 alpha5 60 Mod360Ifalpha6 0Thenalpha32 0 001Elsealpha32 alpha6Picture1 Circle 0 0 0 7 vbBlue alpha31 PI 180 alpha32 PI 180Picture1 Circle 0 0 0 1EndSub 2020年1月2日星期四 Ch10图形操作 大学计算机基础 Hemingrui 55 78 第5节与绘图有关的常用属性 事件和方法 VisualBasic中有许多与绘图有关的属性 事件和方法 使用这些属性 事件和方法可以改变图形的颜色 线型和填充式样等 增加绘图效果 2020年1月2日星期四 Ch10图形操作 大学计算机基础 Hemingrui 56 78 一 清除图形方法Cls Cls方法用于清除容器对象 Form PictureBox 中生成的图形和文本 并将当前坐标移到原点 object Cls 例1 以下语句将从窗体中心 原点 位置向窗体右上角画一条直线Form1 Scale 1 1 1 1 设置窗体的原点在其中心位置Form1 Cls 用Cls清除窗体 并将当前坐标移到原点Form1 Line 1 1 从当前坐标处到点 1 1 画一条直线 2020年1月2日星期四 Ch10图形操作 大学计算机基础 Hemingrui 57 78 二 线宽 DrawWidth 属性与线型 DrawStyle 属性 1 设置线宽 DrawWidth属性容器对象 如Form PictureBox 的DrawWidth属性设置在使用绘图方法 Line Pset Circle 输出时线的宽度 单位为像素 object DrawWidth size size 其范围从1 32767 该值以像素为单位表示线宽 缺省值为1 2020年1月2日星期四 Ch10图形操作 大学计算机基础 Hemingrui 58 78 线宽 DrawWidth 属性与线型 DrawStyle 属性 2 设置线型 DrawStyle属性容器对象 如Form PictureBox 的DrawStyle属性设置在使用绘图方法 Line Pset Circle 输出时线型的样式 object DrawStyle number number 指定线型 整数 2020年1月2日星期四 Ch10图形操作 大学计算机基础 Hemingrui 59 78 线宽 DrawWidth 属性与线型 DrawStyle 属性 例2 用不同的DrawStyle属性值 在窗体分别画一条直线 09 3 03 vbp DrawWidth 1 DrawWidth 2 若DrawWidth属性设置为大于1 DrawStyle属性设置值为1到4会画一条实线 DrawStyle属性值不改变 若DrawWidth设置为1 DrawStyle产生的效果如前面表中的各设置值所述 ex10 5 02 2020年1月2日星期四 Ch10图形操作 大学计算机基础 Hemingrui 60 78 一 清除图形方法Cls 清除运行时Form或PictureBox所生成的图形和文本 省略object 则在当前窗体上执行Cls方法调用Cls之后 object的CurrentX和CurrentY属性复位为0 object Cls Cls将清除图形和打印语句在运行时所产生的文本和图形 而设计时在Form中使用Picture属性设置的背景位图和放置的控件不受Cls影响 如果激活Cls之前AutoRedraw属性设置为False 调用时该属性设置为True 则放置在Form或PictureBox中的图形和文本也不受影响 这就是说 通过对正在处理的对象的AutoRedraw属性进行操作 可以保持Form或PictureBox中的图形和文本 2020年1月2日星期四 Ch10图形操作 大学计算机基础 Hemingrui 61 78 一 CurrentX CurrentY属性 返回或设置窗体或图形框或打印机在绘图时的当前坐标 这两个属性在设计阶段不能使用 object CurrentX x object CurrentY y 当使用某些图形方法后 对象的CurrentX和CurrentY的设置值将发生变化 见下表 例1 利用CurrentX CurrentY属性在窗体上输出如右图的立体效果 09 3 01 vbp 2020年1月2日星期四 Ch10图形操作 大学计算机基础 Hemingrui 62 78 CurrentX CurrentY属性 例2 编写程序 当单击窗体时在窗体中的随机位置打印输出1个不同颜色 随机确定 的任意大写字母 09 3 02 vbp PrivateSubForm Click DimChAsStringCurrentX Form1 ScaleWidth Rnd 设置当前坐标CurrentY Form1 ScaleHeight RndForm1 ForeColor QBColor Int 16 Rnd 设置前景颜色Ch Chr Int Rnd 26 65 PrintChEndSub 2020年1月2日星期四 Ch10图形操作 大学计算机基础 Hemingrui 63 78 三 图形的填充 1 填充方式 FillStyle属性 object FillStyle number 封闭图形的填充方式由FillStyle决定 填充颜色和线条颜色由FillColor决定 number 指定填充样式 整数 2020年1月2日星期四 Ch10图形操作 大学计算机基础 Hemingrui 64 78 图形的填充 对FillStyle属性的说明 FillStyle为0是实填充 1为透明方式 填充图案的颜色由FillColor属性来决定对于窗体和图片框对象 FillStyle属性设置后 并不能看到其填充效果 而只能在使用Circle和Line图形方法生成的圆和方框时 在圆和方框中显示其填充效果 2 FillColor属性用于设置填充形状的颜色 缺省情况下 FillColor设置为0 黑色 object FillColor value value 值或常数 确定填充颜色 RGB或QBColor函数 除Form对象之外 如果FillStyle属性设置为缺省值 1 透明 则忽略FillColor设置值 2020年1月2日星期四 Ch10图形操作 大学计算机基础 Hemingrui 65 78 四 AutoRedraw属性 AutoRedraw属性用于设置和返回对象或控件是否能自动重绘 object AutoRedraw boolean boolean指定如何重绘对象 True使Form对象或PictureBox控件的自动重绘有效 图形和文本输出到屏幕 并存储在内存的图象中 该对象不接受绘制事件 必要时 用存储在内存中的图象进行重绘 False 缺省值 使对象的自动重绘无效 且将图形或文本只写到屏幕上 当需要重画该对象时 VisualBasic会激活对象绘制事件 使用如Circle Cls Line Point Print和Pset 该属性极为重要 利用这些方法 在改变对象大小或隐藏在另一个对象后又重新显示的情况下 设置AutoRedraw为True 将在Form或PictureBox控件中自动重绘输出 2020年1月2日星期四 Ch10图形操作 大学计算机基础 Hemingrui 66 78 第6节图层 使用容器对象的PSet Line和Circle方法 可以更加灵活地在容器中绘制各种图形 这些绘图方法比图形控件绘图要方便得多 2020年1月2日星期四 Ch10图形操作 大学计算机基础 Hemingrui 67 78 第7节保存绘图结果 使用容器对象的PSet Line和Circle方法 可以更加灵活地在容器中绘制各种图形 这些绘图方法比图形控件绘图要方便得多 2020年1月2日星期四 Ch10图形操作 大学计算机基础 Hemingrui 68 78 PSet方法 设置CommonDialog控件属性 设置CommonDialog控件的属性 可以在属性窗口中或代码中设置 也可以在其 属性页 对话框中设置 下图即为CommonDialog控件的属性页 使用不同的选项卡可以为不同类型的对话框设置属性 2020年1月2日星期四 Ch10图形操作 大学计算机基础 Hemingrui 69 78 通用对话框 利用打开方法或属性打开对话框 CommonDialog控件属性设置好后 在运行阶段 通过调用Show方法或将Action属性设置为相关值 确定显示哪种对话框 CommonDialog1 ShowColorCommonDialog1 Action 3 2020年1月2日星期四 Ch10图形操作 大学计算机基础 Hemingrui 70 78 通用对话框 打开 另存为 对话框 1 打开 另存为 对话框 打开 对话框与 另存为 对话框为用户提供了一个标准的文件打开与保存的界面 两种对话框具有许多共同的属性 CommonDialog1 ShowOpenCommonDialog1 Action 1 CommonDialog1 ShowSaveCommonDialog1 Action 2 2020年1月2日星期四 Ch10图形操作 大学计算机基础 Hemingrui 71 78 通用对话框 打开 另存为 对话框 FileName 文件名称属性object FileName pathname 返回或设置所选文件的路径和文件名 如果在使用Show方法前使用FileName属性 则设定了对话框的默认文件名 如果是在以后使用则返回选择的文件名FileTitle 文件标题属性object FileTitle返回要打开或保存文件名 用户选定的文件名或在 文件名 文本框中输入的文件名 2020年1月2日星期四 Ch10图形操作 大学计算机基础 Hemingrui 72 78 通用对话框 打开 另存为 对话框 Filter 过滤器属性确定文件列表框中所显示文件的类型 该属性的值显示在 文件类型 列表框中object Filter description1 filter1 description2 filter2 description 文件说明filter 指定文件的扩展名管道 符号 将description与filter隔开 管道符号的前后都不要加空格Documents DOC DOC TextFiles TXT txt AllFiles 2020年1月2日星期四 Ch10图形操作 大学计算机基础 Hemingrui 73 78 通用对话框 打开 另存为 对话框 FilterIndex 过滤器索引属性object FilterIndex number 当使用Filter属性为 打开 或 另存为 对话框指定过滤器时 该属性指定缺省的过滤器 对

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论