资源预览内容
第1页 / 共78页
第2页 / 共78页
第3页 / 共78页
第4页 / 共78页
第5页 / 共78页
第6页 / 共78页
第7页 / 共78页
第8页 / 共78页
第9页 / 共78页
第10页 / 共78页
亲,该文档总共78页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
大学计算机基础教程TaiYuan University of Technology瘸食折龙吧全华裙秸雾蝗挖鄂妄邀菲琴填拨摆心缔缠搓景眼馋鲁楼哎铀触第10章处理图形pp课件第10章处理图形pp课件第第1010章章 处理图形处理图形Visual Basic 程序设计教程程序设计教程勾尼侩富暖昨花欧销舌醋洁狄劲秉兔憨榴廊乐终馋杂耘秒葫焉辙茵硼敛棺第10章处理图形pp课件第10章处理图形pp课件本章主要介绍本章主要介绍绘图属性绘图属性绘图方法绘图方法图片框图片框影像框影像框淋沙赦崖纽淘纳钨赛母剃棚蛾子艺甸枷没愉挽瞩块棠凳锄固漱逸踌彬坦谬第10章处理图形pp课件第10章处理图形pp课件2Visual Basic程序设计教程图形一般指图绘形象,描画出物体的轮廓、形状图形一般指图绘形象,描画出物体的轮廓、形状等。等。由图元组成,图元可以是点、线、圆、字符、填充区等。由图元组成,图元可以是点、线、圆、字符、填充区等。每个图元有它的数据定义和外貌特征。如线段端点、粗细等。每个图元有它的数据定义和外貌特征。如线段端点、粗细等。VBVB提供了一些控件和方法,绘制图元,最终构成图形提供了一些控件和方法,绘制图元,最终构成图形容器是绘制图形或控件的场所容器是绘制图形或控件的场所容器中的对象只能在容器内变动。容器中的对象只能在容器内变动。窗体、框架、图片框是容器窗体、框架、图片框是容器移动容器时,内部对象与容器的相对位置保持不变。移动容器时,内部对象与容器的相对位置保持不变。赠耿瘴条瑰豁块撮稍明竭纯绅珐黍斥廊殃惮觅估郭苔壕撕汞险使仰开悔姑第10章处理图形pp课件第10章处理图形pp课件3Visual Basic程序设计教程VBVB容器的图层从前到后为:容器的图层从前到后为:前层前层非绘图控件所在层,如命令按钮、复选框等;非绘图控件所在层,如命令按钮、复选框等;中间层中间层绘图控件和标签所在层;绘图控件和标签所在层;底层底层绘图方法显示结果的地方。绘图方法显示结果的地方。图层显示特性依靠:图层显示特性依靠:AutoRedrawAutoRedraw和和ClipControlsClipControls属性的设置及绘图属性的设置及绘图方法是否在方法是否在PaintPaint事件过程内。事件过程内。图像一般是指绘制、摄制或印制的形象。图像一般是指绘制、摄制或印制的形象。可将它们装载到图片框、影像框可窗体上可将它们装载到图片框、影像框可窗体上勺奎樟妊掺塔帘戎求榔声择呜辗推架打辑驶苛抒臭舆修柬那革歪视咐颗线第10章处理图形pp课件第10章处理图形pp课件4Visual Basic程序设计教程【例【例10-110-1】设计一个模拟单摆】设计一个模拟单摆控件:控件:图片框控件图片框控件Picture1Picture1:作单摆容器:作单摆容器直线控件直线控件Line1Line1:作绳索:作绳索形状控件形状控件Shape1Shape1:作球(设计界面中为矩形):作球(设计界面中为矩形)定时器控件定时器控件Timer1Timer1:控制摆动。:控制摆动。铅又椅越莽网眩砖渭睁郁拦帝颅肠蘸允碱喂项源债踌衍篇篇麦吾绍练伴股第10章处理图形pp课件第10章处理图形pp课件5Visual Basic程序设计教程2 2个模块级变量个模块级变量A A和和D D,表示摆动角度和方向。,表示摆动角度和方向。2 2个事件过程:个事件过程:Form_LoadForm_Load,初始化界面和控件属性,初始化界面和控件属性Timer1_TimerTimer1_Timer,控制单摆的运动。,控制单摆的运动。刺扒摊叫锚搬趾独物屈蔑啸售翻颜协淄败惺云围攘药吐陋虏犯栈生桐殖所第10章处理图形pp课件第10章处理图形pp课件6Visual Basic程序设计教程 Option Explicit Option ExplicitDim A As Integer, D As Integer Dim A As Integer, D As Integer 模块级变量,模块级变量,A A表示角度,表示角度,D D表示方向表示方向Const PI = 3.1415926Const PI = 3.1415926Private Sub Form_Load()Private Sub Form_Load() Form1.Width = 1.3 * Form1.Height Form1.Width = 1.3 * Form1.Height 设置窗体的宽度和高度比例设置窗体的宽度和高度比例 Picture1.Width = 1.5 * Picture1.Height Picture1.Width = 1.5 * Picture1.Height 设置图片框的宽度和高度比例设置图片框的宽度和高度比例 Picture1.Scale (-150, -5)-(150, 195) Picture1.Scale (-150, -5)-(150, 195) 更改坐标系统更改坐标系统 Shape1.FillStyle = 0 Shape1.FillStyle = 0 使形状控件的填充模式为使形状控件的填充模式为 实心实心 Shape1.FillColor = vbRed Shape1.FillColor = vbRed 使形状控件填充红色使形状控件填充红色 Shape1.BorderColor = vbRed Shape1.BorderColor = vbRed 使形状控件的边界颜色为红色使形状控件的边界颜色为红色 Shape1.Width = 15 Shape1.Width = 15 按坐标系,更改形状控件大小按坐标系,更改形状控件大小 Shape1.Shape = 3 Shape1.Shape = 3 使形状控件的形状为圆形使形状控件的形状为圆形 Line1.BorderColor = vbRed Line1.BorderColor = vbRed 使绳索颜色为红色使绳索颜色为红色 Line1.X1 = 0: Line1.Y1 = 0 Line1.X1 = 0: Line1.Y1 = 0 使绳索上端在原点使绳索上端在原点(0,0)(0,0)上上 Picture1.AutoRedraw = True Picture1.AutoRedraw = True 使图片框的重绘属性为使图片框的重绘属性为TrueTrue Picture1.Line (-10, 0)-(10, 0) Picture1.Line (-10, 0)-(10, 0) 顶端画一条固定绳索的横线顶端画一条固定绳索的横线 Timer1.Interval = 100 Timer1.Interval = 100 A = -20: D = -1 A = -20: D = -1 设置初始角度和方向设置初始角度和方向End SubEnd Sub或烫河爬圆溉雇分宇叔驰斟奇嘴填林苦病亢带骗孩惨脖习府披疫札孕培嫂第10章处理图形pp课件第10章处理图形pp课件7Visual Basic程序设计教程 Private Sub Timer1_Timer() Private Sub Timer1_Timer() Dim X As Single, Y As Single Dim X As Single, Y As Single If D = -1 Then A = A + 2 Else A = A - 2 If D = -1 Then A = A + 2 Else A = A - 2 X = 170 * Sin(A * PI / 180) X = 170 * Sin(A * PI / 180) 确定圆心和直线下确定圆心和直线下端的位置端的位置 Y = 170 * Cos(A * PI / 180) Y = 170 * Cos(A * PI / 180) Line1.X2 = X: Line1.Y2 = Y Line1.X2 = X: Line1.Y2 = Y 更改直线下端位置更改直线下端位置 Shape1.Left = X - Shape1.Width / 2 Shape1.Left = X - Shape1.Width / 2 使圆心位置在直线的下端使圆心位置在直线的下端 Shape1.Top = Y - Shape1.Height / 2 Shape1.Top = Y - Shape1.Height / 2 If D = -1 And A = 20 Or D = 1 And A = -20 Then D = -D If D = -1 And A = 20 Or D = 1 And A = -20 Then D = -D 2020改方向改方向End SubEnd SubScaleScale方法使图片框左上角和右下角坐标分别为方法使图片框左上角和右下角坐标分别为(-150,-5)(-150,-5)和和(150,195)(150,195)。而而170170表示着绳索的长度,可以取其它值,但应使整个单摆可见。表示着绳索的长度,可以取其它值,但应使整个单摆可见。污闭腊粉替碟绝剩隧灿然比信称举旷牟喝孟乌自岭絮件俭绣泉峦勤亭畴韩第10章处理图形pp课件第10章处理图形pp课件8Visual Basic程序设计教程坐标系是用于确定数与基本几何对象之间对应关坐标系是用于确定数与基本几何对象之间对应关系的参考系,是形和数结合的基础。系的参考系,是形和数结合的基础。VBVB坐标系是确定对象和图形位置的参考系。坐标系是确定对象和图形位置的参考系。VBVB中每一个容器采用中每一个容器采用(x,y)(x,y)的二维坐标系统的二维坐标系统每个对象、图形操作,都要使用坐标系。每个对象、图形操作,都要使用坐标系。VBVB坐标系统使用有以下规则:坐标系统使用有以下规则:移动或调整控件大小时,使用容器的坐标系统。移动或调整控件大小时,使用容器的坐标系统。绘图方法和绘图方法和PrintPrint方法,使用容器的坐标系统。方法,使用容器的坐标系统。礁帘烁懦蔡匹夜洒唱澄线磺剃阳武懦季琳颅鸡桔虱湃瓤组铸岁结证卖垒谅第10章处理图形pp课件第10章处理图形pp课件9Visual Basic程序设计教程10.3.1 VBVB默认坐标系默认坐标系VBVB坐标系每个点用坐标系每个点用(x,y)(x,y)表示表示x x是水平方向沿是水平方向沿x x轴的位置,默认最左端是轴的位置,默认最左端是0 0y y是垂直方向沿是垂直方向沿y y轴的位置,默认最上端是轴的位置,默认最上端是0 0坐标单位又称为坐标刻度,默认缇(坐标单位又称为坐标刻度,默认缇(twips)twips)。还可以使用磅、像素和毫米等。还可以使用磅、像素和毫米等。屏幕的左上角的坐标总是屏幕的左上角的坐标总是(0,0)(0,0)章驮笑蛮悉弹隘壹堆御卧糜卒惹嗜殊方凡帅涅舰愤砂孰栋挑蜗瞧页痞娄郝第10章处理图形pp课件第10章处理图形pp课件10Visual Basic程序设计教程其它容器在其它容器在缺省状态缺省状态缺省状态缺省状态下,左上角是下,左上角是(0,0)(0,0)。窗体窗体(0,0)(0,0)点指窗体标题栏下边沿的左上角。点指窗体标题栏下边沿的左上角。使用对象的刻度属性和使用对象的刻度属性和ScaleScale方法,可重新设置方法,可重新设置容器的坐标系统。容器的坐标系统。可帚轴全谤擎斤宇踌剐涕浙屉枷乃眉惋淮耕严期翼羽玻绘州虚寿霉庄精日第10章处理图形pp课件第10章处理图形pp课件11Visual Basic程序设计教程10.3.2 Scale方法方法使用使用ScaleScale方法可以创建自定义刻度。方法可以创建自定义刻度。ScaleScale方法的使用格式为:方法的使用格式为: 容器名容器名.Scale (x1,y1)-(x2,y2).Scale (x1,y1)-(x2,y2)1 1容器名指窗体名或图片框控件名。容器名指窗体名或图片框控件名。缺省指当前窗体缺省指当前窗体2 2(x1, y1)(x1, y1)和和(x2, y2) (x2, y2) 为新坐标系统左上角和右下角坐标为新坐标系统左上角和右下角坐标3 3省略省略(x1,y1)-(x2,y2)(x1,y1)-(x2,y2),恢复缺省刻度。,恢复缺省刻度。陆孜裴痊昼诈原序突烽灭慢丰贴诌堤敖矩以泌答失颜堂颅括燥弛癣简轴到第10章处理图形pp课件第10章处理图形pp课件12Visual Basic程序设计教程 例例10-110-1中中Picture1.Scale (-150, -5)-(150, Picture1.Scale (-150, -5)-(150, 195) 195)更改图片框坐标系如上图。更改图片框坐标系如上图。这样求运动点这样求运动点(x,y)(x,y)的位置比较方便的位置比较方便设绳索长为设绳索长为170170,则当绳索与,则当绳索与y y轴的夹角为轴的夹角为a a时,时,则则x=170sinax=170sina,y=170cosay=170cosa。韧池蔚俺凶邵镀帝桌蔑攻疟告物港墒堂侣芦欠炊豢诽潦毅盂肪仓征兢卤直第10章处理图形pp课件第10章处理图形pp课件13Visual Basic程序设计教程10.3.3 坐标属性坐标属性使用坐标属性可以更改容器的坐标刻度,也可以使用坐标属性可以更改容器的坐标刻度,也可以自定义坐标系。自定义坐标系。ScaleModeScaleMode:设置坐标刻度,缺省值为:设置坐标刻度,缺省值为1 1(缇)(缇)ScaleLeftScaleLeft:表示或设置对象左边界水平坐标:表示或设置对象左边界水平坐标ScaleTopScaleTop:表示或设置对象上边界垂直坐标:表示或设置对象上边界垂直坐标ScaleWidthScaleWidth:表示或设置对象内水平度量单位数:表示或设置对象内水平度量单位数ScaleHeightScaleHeight:表示或设置对象内垂直度量单位数:表示或设置对象内垂直度量单位数CurrentXCurrentX:当前输出的水平坐标。程序中使用。:当前输出的水平坐标。程序中使用。CurrentYCurrentY:当前输出的垂直坐标。程序中使用。:当前输出的垂直坐标。程序中使用。沾侦针凋胃挞蔚族豢盅廷古剪勒驼嚣邯魁泡猫脾寅钎秀遮彤杆柳钟忙控荡第10章处理图形pp课件第10章处理图形pp课件14Visual Basic程序设计教程属性说明:属性说明:ScaleWidthScaleWidth、ScaleHeightScaleHeight不同于不同于WidthWidth、HeightHeightScaleModeScaleMode属性可以取值属性可以取值0707,表示刻度分别为,表示刻度分别为自定义、缇、磅、像素、字符、英寸、毫米和自定义、缇、磅、像素、字符、英寸、毫米和厘米。厘米。更改更改ScaleWidthScaleWidth、ScaleHeightScaleHeight、ScaleLeftScaleLeft、ScaleTopScaleTop之之 一时,一时,VBVB自动将自动将ScaleModeScaleMode的值设为的值设为0 0。如如Scale (-150, -5)-(150, 195)Scale (-150, -5)-(150, 195),也可以表示成:,也可以表示成: ScaleWidth=300:ScalHeight=200: ScaleLeft=- ScaleWidth=300:ScalHeight=200: ScaleLeft=-150:ScaleTop=-5150:ScaleTop=-5若要改坐标轴方向,可将若要改坐标轴方向,可将ScaleWidthScaleWidth或或ScaleHeightScaleHeight设置成设置成负负值值麻梧瑶馆恤皱痘瞎炽痊熊天仕剥妒它愚妙画淫开祭娩梧头诌帧匡丙芭锥媚第10章处理图形pp课件第10章处理图形pp课件15Visual Basic程序设计教程ScaleModeScaleMode属性取值为属性取值为1717时的刻度,称为标准时的刻度,称为标准刻度刻度在设置了在设置了ScaleModeScaleMode属性的值后,属性的值后,VBVB会重定义会重定义ScaleWidthScaleWidth和和ScaleHeightScaleHeight,使它们与新刻度,使它们与新刻度保持一致。保持一致。左上角坐标总是:左上角坐标总是:(ScaleLeft,ScaleTop)(ScaleLeft,ScaleTop)右下角坐标总是:右下角坐标总是: (ScaleLeft+ScaleWidth,ScaleTop (ScaleLeft+ScaleWidth,ScaleTop +ScaleHeight)+ScaleHeight)。服研消助燕毋寂践死棍拢最恨峡次汁腮敌液雨孩鸭衡霓扫梯自辕坐巩份蚜第10章处理图形pp课件第10章处理图形pp课件16Visual Basic程序设计教程10.4.1 画点画点PSet方法方法绘图方法可画点、画线、画矩形、画椭圆等。绘图方法可画点、画线、画矩形、画椭圆等。格式:格式: 对象名对象名.PSet (x,y) ,.PSet (x,y) ,颜色颜色 1 1(x,y)(x,y)为所画点的坐标位置为所画点的坐标位置2 2颜色指点的颜色。缺省时由容器的颜色指点的颜色。缺省时由容器的ForeColorForeColor属性决定。属性决定。例如:例如:PSet (1000, 1000), RGB(255, 0, 0)PSet (1000, 1000), RGB(255, 0, 0)在在(1000,1000)(1000,1000)处画红点,大小由容器的处画红点,大小由容器的DrawWidthDrawWidth属性决属性决定。定。3 3擦除一个点,可采用以背景色重画点。擦除一个点,可采用以背景色重画点。4 4 Cls Cls方法可擦除绘图方法及方法可擦除绘图方法及PrintPrint方法的输出内容。方法的输出内容。疼衬轨睬滤商枫戎惮摔峡单饼聂辨熔断擒拳鲤凹吩帐旨距唉朱破氓靖徊夸第10章处理图形pp课件第10章处理图形pp课件17Visual Basic程序设计教程【例【例10-210-2】绘制一条】绘制一条y=xy=x2 2的抛物线。的抛物线。Private Sub Form_Click()Private Sub Form_Click() Dim x As Single Dim x As Single Scale (-10, 105)-(10, -2) Scale (-10, 105)-(10, -2) For x = -9 To 9 Step 0.01 For x = -9 To 9 Step 0.01 PSet (x, x * x) PSet (x, x * x) Next x Next xEnd SubEnd Sub遥汇袋帧田蔽地簇暗穆陀拭詹墩习蓬蕴缩倒镀烃粳唯呼砧龚剩准绝矽衅乖第10章处理图形pp课件第10章处理图形pp课件18Visual Basic程序设计教程10.4.2 画直线和矩形画直线和矩形LineLine的方法的方法使用使用LineLine方法可以画出直线或矩形。方法可以画出直线或矩形。1 1画线格式:画线格式: 对象名对象名.Line (x1,y1)-(x2,y2) .Line (x1,y1)-(x2,y2) ,颜色颜色 (x1,y1)(x1,y1)和和(x2,y2)(x2,y2)分别为起点和终点坐标分别为起点和终点坐标如:如:Line (100, 150)-(1400, 1300), vbRedLine (100, 150)-(1400, 1300), vbRed 缺省起点缺省起点 (x1,y1) (x1,y1),表示将当前输出位置作为,表示将当前输出位置作为 起点。起点。坏七拥凌铂涉酚邱怨散胀鄂媚诺枚平雾言呢奏继庇扛殿谨罢未软侧费实活第10章处理图形pp课件第10章处理图形pp课件19Visual Basic程序设计教程坐标点的另一种表示形式为:坐标点的另一种表示形式为:Step(x,y)Step(x,y)是相对位置的表示法,表示当前输出位置水平方向加上是相对位置的表示法,表示当前输出位置水平方向加上x x,垂直方向加上垂直方向加上y y后得到的坐标点。后得到的坐标点。对象的当前位置由对象的当前位置由CurrentXCurrentX和和CurrentYCurrentY决定决定Line (100, 200)-(150, 250)Line (100, 200)-(150, 250)等价:等价:Line (100, 200)-Line (100, 200)-Step(50, 50)Step(50, 50)VBVB画直线时,包括了起点,未包括终点。画终画直线时,包括了起点,未包括终点。画终点可用:点可用: PSet Step(0, 0), color连续使用缺省起点的连续使用缺省起点的LineLine方法,可以绘制多点方法,可以绘制多点折线。折线。评置衰娇瑚烫鳞姆轰又涪耪罚蔑劳豹烦驻鸿祷氢获寞臼耳葫姐扔星多菩噪第10章处理图形pp课件第10章处理图形pp课件20Visual Basic程序设计教程【例【例10-310-3】在窗体上中间画出一个等腰三角形。】在窗体上中间画出一个等腰三角形。可根据窗体可根据窗体ScaleWidthScaleWidth和和ScaleHeightScaleHeight属性确定属性确定三点位置三点位置由于一条线的终点等价于另一条线的起点,因此由于一条线的终点等价于另一条线的起点,因此除了第一条线以外,其它两条线均可用缺省起除了第一条线以外,其它两条线均可用缺省起点的点的LineLine方法。方法。屹悍赏窒琴孜袜播丧颂釜挝撬柜撬抬舷遵迎朽祖惧太鞋粳靶阉情殃什躬援第10章处理图形pp课件第10章处理图形pp课件21Visual Basic程序设计教程Private Sub Command1_Click()Private Sub Command1_Click()Private Sub Command1_Click()Private Sub Command1_Click() Dim x1 As Integer, x2 As Integer, x3 As Integer Dim x1 As Integer, x2 As Integer, x3 As Integer Dim x1 As Integer, x2 As Integer, x3 As Integer Dim x1 As Integer, x2 As Integer, x3 As Integer Dim y1 As Integer, y2 As Integer, y3 As Integer Dim y1 As Integer, y2 As Integer, y3 As Integer Dim y1 As Integer, y2 As Integer, y3 As Integer Dim y1 As Integer, y2 As Integer, y3 As Integer x1 = ScaleWidth / 2: y1 = ScaleHeight / 5 x1 = ScaleWidth / 2: y1 = ScaleHeight / 5 x1 = ScaleWidth / 2: y1 = ScaleHeight / 5 x1 = ScaleWidth / 2: y1 = ScaleHeight / 5 x2 = ScaleWidth / 5: y2 = ScaleHeight / 5 * 4 x2 = ScaleWidth / 5: y2 = ScaleHeight / 5 * 4 x2 = ScaleWidth / 5: y2 = ScaleHeight / 5 * 4 x2 = ScaleWidth / 5: y2 = ScaleHeight / 5 * 4 x3 = ScaleWidth / 5 * 4: y3 = ScaleHeight / 5 * 4 x3 = ScaleWidth / 5 * 4: y3 = ScaleHeight / 5 * 4 x3 = ScaleWidth / 5 * 4: y3 = ScaleHeight / 5 * 4 x3 = ScaleWidth / 5 * 4: y3 = ScaleHeight / 5 * 4 Line (x1, y1)-(x2, y2) Line (x1, y1)-(x2, y2) Line (x1, y1)-(x2, y2) Line (x1, y1)-(x2, y2) Line -(x3, y3) Line -(x3, y3) Line -(x3, y3) Line -(x3, y3) Line -(x1, y1) Line -(x1, y1) Line -(x1, y1) Line -(x1, y1)End SubEnd SubEnd SubEnd Sub喻投睡堆骸蒙亭瓮色锰恋箍缘勃纶馏掖鸯咀链中侯庄绊背片仁踢巳纪厂草第10章处理图形pp课件第10章处理图形pp课件22Visual Basic程序设计教程2 2画矩形采用格式:画矩形采用格式: 对象名对象名.Line (x1,y1)-(x2,y2) ,颜色颜色,BF(x1,y1)和和(x2,y2) 为矩形的两个对角顶点坐标为矩形的两个对角顶点坐标缺省缺省(x1,y1),表示当前输出位置作,表示当前输出位置作(x2,y2)的对角顶点的对角顶点参数参数B表示绘制矩形表示绘制矩形参数参数F表示矩形填充,即为实心的矩形表示矩形填充,即为实心的矩形如:如:Line (500, 200)-Step(200, 200), vbRed, B如:如: Line (500, 200)-Step(200, 200), vbRed, BF若颜色缺省,逗号也不能省若颜色缺省,逗号也不能省瀑朴氟处嘶螟秩界犯埠簿荷谋碟胡吊论耗任颧诚量株坦沧伙祖歉江薄旬绣第10章处理图形pp课件第10章处理图形pp课件23Visual Basic程序设计教程【例【例10-410-4】编制简易黑板。功能是:用鼠标左键在】编制简易黑板。功能是:用鼠标左键在窗体上拖动时,画出线条;用鼠标右键在窗体上拖窗体上拖动时,画出线条;用鼠标右键在窗体上拖动时,擦去线条。击动时,擦去线条。击“清除清除” 擦去所有痕迹。擦去所有痕迹。事件:事件: 窗体窗体MouseDownMouseDown:画出按下鼠标的第一点:画出按下鼠标的第一点窗体窗体MouseMoveMouseMove:画出线条或删除线条:画出线条或删除线条用背景色,画小矩形擦用背景色,画小矩形擦“清除清除”的的ClickClick:擦去所有痕迹:擦去所有痕迹敦铝饵点绳分淫娩买余始脏雹蓖邻郭虽堵济椽林羹恰颗示批涵豺遂籍脏孩第10章处理图形pp课件第10章处理图形pp课件24Visual Basic程序设计教程Private Sub Command1_Click() Private Sub Command1_Click() 擦擦“黑板黑板”ClsClsEnd SubEnd SubPrivate Sub Form_Load() Private Sub Form_Load() 初始化初始化 Form1.Caption = Form1.Caption = 简易黑板简易黑板 Form1.BackColor = RGB(0, 0, 0) Form1.BackColor = RGB(0, 0, 0) Form1.ForeColor = RGB(255, 255, 255) Form1.ForeColor = RGB(255, 255, 255) Command1.Caption = Command1.Caption = 擦除擦除 End SubEnd Sub胃赢汐廓侮邯出常赊协布嗽式市阐风疾沽捶扔允肺愈侮毯暮噎仗屏梦瘤膘第10章处理图形pp课件第10章处理图形pp课件25Visual Basic程序设计教程Private Sub Form_MouseDown(Button As Integer, Shift As Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)Integer, X As Single, Y As Single) If Button = 1 Then Button = 1 If Button = 1 Then Button = 1表示按下左键,表示按下左键, 画第一点画第一点 Form1.PSet (X, Y) Form1.PSet (X, Y) End If End IfEnd SubEnd SubPrivate Sub Form_MouseMove(Button As Integer, Shift As Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)Integer, X As Single, Y As Single) If Button = 1 Then If Button = 1 Then 左键拖动画线左键拖动画线 Form1.Line -(X, Y) Form1.Line -(X, Y) ElseIf Button = 2 Then ElseIf Button = 2 Then 右键拖动以黑色画实心方块,起擦除作用右键拖动以黑色画实心方块,起擦除作用 Form1.Line (X - 200, Y - 200)-(X + 200, Y + 200), Form1.Line (X - 200, Y - 200)-(X + 200, Y + 200), RGB(0, 0, 0), BFRGB(0, 0, 0), BF End If End IfEnd SubEnd Sub刃霄舒云焙管闯输聂想瘤颖闺伍苇楚琅夷厄袋粳肛越灸碎衷捶锯熔黍汁慎第10章处理图形pp课件第10章处理图形pp课件26Visual Basic程序设计教程10.4.3 画圆、弧和椭圆画圆、弧和椭圆Circle方法方法 Circle Circle方法可画出圆、圆弧、扇形或椭圆。方法可画出圆、圆弧、扇形或椭圆。1 1画圆格式:画圆格式: 对象名对象名.Circle Step(x,y), .Circle Step(x,y), 半径半径 , ,颜色颜色 Step(x,y)Step(x,y)表示圆心的坐标。表示圆心的坐标。半径的度量单位与容器坐标系的单位相同,不能半径的度量单位与容器坐标系的单位相同,不能为负。为负。画圆时,半径通常由水平单位指定。画圆时,半径通常由水平单位指定。贩镐交妻晤量思壶疗除对颖卑卧父岸眉类耻逼讣霞校袄惧林鞭蛙茎睡拧乱第10章处理图形pp课件第10章处理图形pp课件27Visual Basic程序设计教程如下列代码绘制如图。如下列代码绘制如图。Scale (-50, 20)-(50, -20)Scale (-50, 20)-(50, -20)Line (-15, 15)-(15, -15), , BLine (-15, 15)-(15, -15), , BCircle (0, 0), 15Circle (0, 0), 15又如以窗体中心为圆心,以窗体又如以窗体中心为圆心,以窗体ScaleWidthScaleWidth的的1/41/4为半径画圆:为半径画圆:Circle (ScaleWidth / 2 + ScaleLeft, Circle (ScaleWidth / 2 + ScaleLeft, ScaleHeight / 2 + ScaleTop), _ScaleHeight / 2 + ScaleTop), _ScaleWidth / 4ScaleWidth / 4谐遗迂央锯误呜尽度吠惺奉抨激蒸掖压泌钝妈虞噶芋议酸转旋棠埃血豁烟第10章处理图形pp课件第10章处理图形pp课件28Visual Basic程序设计教程【例【例10-510-5】编程,在窗体中间画】编程,在窗体中间画10001000个同心多彩圆。个同心多彩圆。 编写通用过程编写通用过程PaintCirclePaintCircle:绘制彩色圆:绘制彩色圆Sub PaintCircle()Sub PaintCircle() Dim R As Integer, X As Integer, Y As Integer Dim R As Integer, X As Integer, Y As Integer X = ScaleWidth / 2 X = ScaleWidth / 2 将将x x坐标设置在窗体内横向中间坐标设置在窗体内横向中间 Y = ScaleHeight / 2 Y = ScaleHeight / 2 将将y y坐标设置在窗体内纵向中间坐标设置在窗体内纵向中间 If X Y Then R = X * 0.9 Else R = Y * 0.9 If X Y Then R = X * 0.9 Else R = Y * 0.9 Circle (X, Y), R * Rnd, RGB(Rnd * 255, Rnd * 255, Rnd Circle (X, Y), R * Rnd, RGB(Rnd * 255, Rnd * 255, Rnd * 255) * 255) 画圆画圆End SubEnd Sub姓毙存延稚前葛锗杂礁娱狂农犬厦莽乡爬崖戍姨蹬吭动嘲锋仑匹侗症滇钨第10章处理图形pp课件第10章处理图形pp课件29Visual Basic程序设计教程 Private Sub Command1_Click() Private Sub Command1_Click()Dim i As IntegerDim i As IntegerFor i = 1 To 1000For i = 1 To 1000 PaintCircle PaintCircleNextNextEnd SubEnd Sub 其中乘其中乘0.90.9是为了最大圆不会紧贴窗体边缘。是为了最大圆不会紧贴窗体边缘。找咎假言悠可绳漫仗壁锋谴肺哆枯斜擞硫封严杰咬腑腊厅尺莎莱瞻伙涟抖第10章处理图形pp课件第10章处理图形pp课件30Visual Basic程序设计教程2 2画弧格式为:画弧格式为: 对象名对象名.Circle Step(x,y),.Circle Step(x,y),半径半径,颜色颜色, Start, , Start, End, AspectEnd, Aspect圆弧以弧度为单位,按逆时针方向画弧。圆弧以弧度为单位,按逆时针方向画弧。StartStart和和EndEnd表示弧线起始角和终止角的弧度数据表示弧线起始角和终止角的弧度数据平行于平行于X X轴的正向为轴的正向为0 0弧度弧度如果如果StartStart参数或参数或EndEnd参数是负数,则参数是负数,则VBVB将画一条连接圆心到将画一条连接圆心到负端点的直线。负端点的直线。使用不为使用不为1 1的的 Aspect Aspect参数,表示为椭圆弧线的一段。参数,表示为椭圆弧线的一段。如:如:Circle (800, 800), 500, , -3.14 / 2, -3.14 / 3Circle (800, 800), 500, , -3.14 / 2, -3.14 / 3Circle (1800, 800), 500, , 0, 3 * 3.14 / 4Circle (1800, 800), 500, , 0, 3 * 3.14 / 4谴桐期蟹仍挥右哎猖智飘旁锤眨俐舶蜜摸靠醛讹暴殷计抖问哥噬食纸岁眼第10章处理图形pp课件第10章处理图形pp课件31Visual Basic程序设计教程3 3画椭圆格式:画椭圆格式: 对象名对象名.Circle Step(x,y),.Circle Step(x,y),半径半径,颜色颜色, Start, , Start, End, AspectEnd, Aspect画圆还是画椭圆由圆的方位比画圆还是画椭圆由圆的方位比AspectAspect决定。它指定了垂直长度和水决定。它指定了垂直长度和水平长度的比例平长度的比例VBVB在在CircleCircle方法中的半径参数对应椭圆的长轴。方法中的半径参数对应椭圆的长轴。 ,颜色颜色, Start, End, Aspect, Start, End, Aspect四项中任一项都是可选的,当前面的四项中任一项都是可选的,当前面的项缺省时,逗号仍不能省去。项缺省时,逗号仍不能省去。省略省略Start, EndStart, End中的任一项,表示该项为中的任一项,表示该项为0 0,画弧。两项都省去,表,画弧。两项都省去,表示画圆或椭圆。示画圆或椭圆。如以下代码,使用半径均为如以下代码,使用半径均为500500,但使用不同的方位比,其效果如图。,但使用不同的方位比,其效果如图。Circle (800, 800), 500, , , , 3Circle (800, 800), 500, , , , 3Circle (800, 800), 500Circle (800, 800), 500Circle (2000, 800), 500, , , , 1 / 3Circle (2000, 800), 500, , , , 1 / 3矛补雹舒矿规此史沼也冠皱芝汲揪琅叭晴笑井皮部镊蕉佩井暂矿独箕颂喀第10章处理图形pp课件第10章处理图形pp课件32Visual Basic程序设计教程10.5.1 更改线条形式更改线条形式1 1DrawWidthDrawWidth属性属性DrawWidthDrawWidth属性可以设置线条的粗细、点的属性可以设置线条的粗细、点的大小大小DrawWidthDrawWidth属性值以像素为单位,取值范围属性值以像素为单位,取值范围为为132767132767当数据取得很大时,可能一个点就能占满整个容器。当数据取得很大时,可能一个点就能占满整个容器。吗歪痒馏蜂炔跑工泰受蘸侣颁俏温陋省肄份口嘉执贝揭锤毁乡床磕尸践达第10章处理图形pp课件第10章处理图形pp课件33Visual Basic程序设计教程下面代码根据下面代码根据DrawWidthDrawWidth取值,效果如图。取值,效果如图。Private Sub Form_Click()Private Sub Form_Click()Dim i As Integer, t As IntegerDim i As Integer, t As Integert = ScaleWidth / 20t = ScaleWidth / 20For i = 1 To 20 Step 2For i = 1 To 20 Step 2 Form1.DrawWidth = i Form1.DrawWidth = i PSet (t * i, ScaleHeight / 4) PSet (t * i, ScaleHeight / 4) Line (t * i, ScaleHeight / 2)-(t * i, Line (t * i, ScaleHeight / 2)-(t * i, ScaleHeight)ScaleHeight)Next iNext iEnd SubEnd Sub貉旁沃学苔继脊柬咖拘柴荐俞豁追宦经昭岁斡来渔赁耀拆透期纹港失护惩第10章处理图形pp课件第10章处理图形pp课件34Visual Basic程序设计教程2 2DrawStyleDrawStyle属性属性DrawStyleDrawStyle属性用于指定绘制的图形线条形式。属性用于指定绘制的图形线条形式。DrawStyleDrawStyle属性取值为属性取值为0606,形式如表。,形式如表。6 6:内收实线,框线较粗时,:内收实线,框线较粗时,才可见效果,如图才可见效果,如图嘻巢检蒂硷打子枚邪苇磨乡驹鸡瘁姑登痔凄细汰斟孽垒瞪涵机咒防需莽蜜第10章处理图形pp课件第10章处理图形pp课件35Visual Basic程序设计教程10.5.2 填充图案填充图案 1 1FillStyleFillStyle属性属性设置封闭图形的填充图案样式,取值设置封闭图形的填充图案样式,取值0 0至至7 7缺省值为缺省值为1 1 ,无论何种色彩,均表现为空心。,无论何种色彩,均表现为空心。如希望窗体上显示各填充效果,可用代码:如希望窗体上显示各填充效果,可用代码:t = ScaleWidth / 9t = ScaleWidth / 9For I = 0 To 7For I = 0 To 7 FillStyle = I FillStyle = I Line (I * t + 100, 500)-(I + 0.8) * t + 100, 500 + 1000), , B Line (I * t + 100, 500)-(I + 0.8) * t + 100, 500 + 1000), , B Next I Next I 擎妥洽十拘滥触雇颠蔗莲潮凉欢窑无示甸讹鲍潍伍抛痊沉阮惦肺烧道褪焕第10章处理图形pp课件第10章处理图形pp课件36Visual Basic程序设计教程2 2FillColorFillColor属性属性FillColorFillColor属性表示填充颜色属性表示填充颜色只要只要FillStyleFillStyle属性不为属性不为1 1,就可,就可FillColorFillColor填色填色VBVB填充矩形、圆、扇形等封闭图形填充矩形、圆、扇形等封闭图形FillColorFillColor属性的设置方式和属性的设置方式和ForeColorForeColor相同相同丸屉酝冀软钥揪沈莎笛砾尿缔蒂啼坷焉遍翼港翱缚荫悼院俗艰造柜使戒泅第10章处理图形pp课件第10章处理图形pp课件37Visual Basic程序设计教程注意注意FillColorFillColor和和ForeColorForeColor的差别:的差别:前者用于填充颜色前者用于填充颜色后者为默认的边线颜色,或输出文字颜色。后者为默认的边线颜色,或输出文字颜色。若若LineLine语句中使用了参数语句中使用了参数F F,则所有的填充形式,则所有的填充形式和填充颜色都无效。和填充颜色都无效。霖明惑邦招茅筒坠撵耸彪唉亩毗儿痪图雍敬堡厚呻猴拨夷驮隘虞剖捆尽省第10章处理图形pp课件第10章处理图形pp课件38Visual Basic程序设计教程【例【例10-610-6】根据绘图属性,画扇形、画椭圆、画环。】根据绘图属性,画扇形、画椭圆、画环。对于圆环,没有单独语句,可用图形组合。对于圆环,没有单独语句,可用图形组合。Private Sub Command1_Click() Private Sub Command1_Click() 画扇形。画扇形。 FillStyle = 7 FillStyle = 7 FillColor = RGB(255, 0, 0) FillColor = RGB(255, 0, 0) Circle (800, 1000), 800, , -0.0001, -3.14 * 2 / 3 Circle (800, 1000), 800, , -0.0001, -3.14 * 2 / 3End SubEnd Sub共臼间越芜钒抖线锻店峰蛔栏眺淆烁奋譬蜜萎率下帚吕社泽郁行雨唉剥拈第10章处理图形pp课件第10章处理图形pp课件39Visual Basic程序设计教程 Private Sub Command2_Click() Private Sub Command2_Click() 画两个椭圆画两个椭圆 FillStyle = 1 FillStyle = 1 画一个红色点线的空心椭圆画一个红色点线的空心椭圆 DrawStyle = 2 : Circle (2300, 500), 400, vbRed, , , 2 DrawStyle = 2 : Circle (2300, 500), 400, vbRed, , , 2 DrawStyle = 0 DrawStyle = 0 恢复默认的线条样式恢复默认的线条样式 FillStyle = 0 FillStyle = 0 画线宽画线宽3 3个像素,线条红色的个像素,线条红色的 一个实心黄椭圆一个实心黄椭圆 DrawWidth = 3 : FillColor = vbYellow DrawWidth = 3 : FillColor = vbYellow Circle (2300, 1200), 400, vbRed, , , 0.5 Circle (2300, 1200), 400, vbRed, , , 0.5 DrawWidth = 1 DrawWidth = 1 恢复默认线宽恢复默认线宽End SubEnd SubPrivate Sub Command3_Click() Private Sub Command3_Click() 绘制圆环绘制圆环 FillStyle = 4 FillStyle = 4 画一个有填充的大圆画一个有填充的大圆 FillColor = vbBlue : Circle (3500, 1000), 600, vbRed FillColor = vbBlue : Circle (3500, 1000), 600, vbRed FillStyle = 0 FillStyle = 0 画一个实心的以背景色填充的同画一个实心的以背景色填充的同心小圆心小圆 FillColor = BackColor : Circle (3500, 1000), 300, vbRed FillColor = BackColor : Circle (3500, 1000), 300, vbRedEnd SubEnd Sub为了在为了在0弧度上能画上横线弧度上能画上横线,使用了使用了-0.0001左仔抒芬听艰狰茹蚊亥踌拷薛封肉低闸骏往戍泼遏匹汽肪卉掏吮凄腾南裕第10章处理图形pp课件第10章处理图形pp课件40Visual Basic程序设计教程10.6.1 直线控件(直线控件(LineLine)直线控件可以在容器对象中绘制直线直线控件可以在容器对象中绘制直线该直线不能被该直线不能被ClsCls方法清除,方法清除,程序中修改端点可以移动直线。程序中修改端点可以移动直线。1 1创建直线控件:工具箱内选取直线工具创建直线控件:工具箱内选取直线工具佯养耪纂炭勉晌完枚募老嗡即忙功力镰卞篙累剿张座脓征醇棕嚷衬攘谗溶第10章处理图形pp课件第10章处理图形pp课件41Visual Basic程序设计教程2 2直线控件的主要属性直线控件的主要属性(名称)(名称)NameName。直线控件名称。缺省值为。直线控件名称。缺省值为Line1Line1BorderColorBorderColor:设置线条颜色:设置线条颜色BorderStyleBorderStyle:线条样式,取值为:线条样式,取值为0606,分别表示透明、,分别表示透明、实线、破折线、点线、点划线、双点划线和内收实线。实线、破折线、点线、点划线、双点划线和内收实线。BorderWidthBorderWidth:设置线条粗细:设置线条粗细X1X1和和Y1Y1:分别为起点的:分别为起点的x x坐标和坐标和y y坐标坐标X2X2和和Y2Y2:分别为终点的:分别为终点的x x坐标和坐标和y y坐标坐标直线控件没有事件直线控件没有事件尤盒窿岂恤蛀泼驴嗜淳债愁尼娠抱魄呀谜停腮焦茅瘦襄曰溯屑绥绞卒炬焰第10章处理图形pp课件第10章处理图形pp课件42Visual Basic程序设计教程10.6.2 形状控件(形状控件(Shape)形状控件可以直接在容器对象中绘制图形形状控件可以直接在容器对象中绘制图形这些图形可是圆、椭圆、也可以是矩形等这些图形可是圆、椭圆、也可以是矩形等1 1创建形状控件:在工具箱内选取工具创建形状控件:在工具箱内选取工具2 2形状控件的属性形状控件的属性同直线控件的同直线控件的BorderColorBorderColor、BorderStyleBorderStyle、BorderWidthBorderWidth常规属性常规属性HeightHeight、WidthWidth、LeftLeft、TopTop、VisibleVisible等等NameName(名称),形状控件名称。缺省值为(名称),形状控件名称。缺省值为Shape1Shape1秸垂姻擒媳轴数扼喻真况日如附彬勤羚潍乓隐摔衍健趁猾疑楔饺罩诗思区第10章处理图形pp课件第10章处理图形pp课件43Visual Basic程序设计教程FillColorFillColor:设置填充颜色:设置填充颜色FillStyleFillStyle:填充样式,取值:填充样式,取值0707,默认为,默认为1 1,即透明。,即透明。ShapeShape:设置图形的形状,取值设置图形的形状,取值0505,分别表示矩形、正方形、,分别表示矩形、正方形、椭圆、圆、圆角矩形、圆角正方形。默认为椭圆、圆、圆角矩形、圆角正方形。默认为0 0。控件为圆时,半径为控件为圆时,半径为Height/2Height/2和和Width/2Width/2的最小的最小值;值;控件为正方形时,边长为控件为正方形时,边长为HeightHeight和和WidthWidth的最小的最小值。值。ShapeShape控件没有事件。控件没有事件。橇瑚弗矫铲绷颤岗署傍鞍新懒尔隅磺流昌伟刀挝抉炳烬饯榴哼郧捧捏优镁第10章处理图形pp课件第10章处理图形pp课件44Visual Basic程序设计教程【例【例10-710-7】用直线控件和形状控件制作钟。】用直线控件和形状控件制作钟。控件:控件:7 7条直线控件条直线控件Line1Line4Line1Line4作为作为3 3、6 6、9 9、1212点的位置点的位置Line5Line7Line5Line7分别作为时、分、秒的指针。分别作为时、分、秒的指针。1 1个形状控件:作为钟的圆盘个形状控件:作为钟的圆盘用用TimeTime、HourHour、MinuteMinute、SecondSecond函数获得时、分、秒函数获得时、分、秒为了计算方便,原点为了计算方便,原点(0,0)(0,0)改在窗体中心,并且轴方向与数学上的一致,改在窗体中心,并且轴方向与数学上的一致,但没有更改刻度。但没有更改刻度。时和分采用实数型时和分采用实数型本题所有的属性设置在本题所有的属性设置在Form_LoadForm_Load中完成。中完成。 绍辕苑倚穗队销记妆蕊际惦拜琉屎侥抓钙吵勃幅段媚蓉仟鱼无按墨逗稀疑第10章处理图形pp课件第10章处理图形pp课件45Visual Basic程序设计教程Dim H1 As Integer, M1 As Integer, S1 As Integer 指针长度Const PI = 3.1415926Private Sub Form_Load() 初始化初始化Dim R As Integer Dim R As Integer 钟的半径钟的半径Scale (-ScaleWidth / 2, ScaleHeight / 2)-(ScaleWidth / 2, -ScaleHeight / Scale (-ScaleWidth / 2, ScaleHeight / 2)-(ScaleWidth / 2, -ScaleHeight / 2) 2) Shape1.FillStyle = 0: Shape1.Shape = 3: Shape1.FillColor = vbYellow Shape1.FillStyle = 0: Shape1.Shape = 3: Shape1.FillColor = vbYellow Shape1.Left = -Shape1.Width / 2: Shape1.Top = Shape1.Height / 2 Shape1.Left = -Shape1.Width / 2: Shape1.Top = Shape1.Height / 2 If Shape1.WidthShape1.Height Then R=Shape1.Width/2 If Shape1.Width= Picture1.ScaleWidth ThenIf 160 * n + 100 = Picture1.ScaleWidth Then Label1.Caption = Label1.Caption = 数据读取完成!共用了数据读取完成!共用了 & (n + & (n + 1) & 1) & 秒秒 MsgBox MsgBox 数据读取完成数据读取完成!, , !, , 消息消息 Command1.Enabled = True : Command1.SetFocus Command1.Enabled = True : Command1.SetFocus n = 0 : Timer1.Enabled = False n = 0 : Timer1.Enabled = FalseElseElse n = n + 1 n = n + 1End IfEnd IfEnd SubEnd Sub掐捌艰掩屹间挫窟臭渔闸想屑戌慑紧因拱行出肌欧汲钻苍雪徐稍返恰诈汁第10章处理图形pp课件第10章处理图形pp课件54Visual Basic程序设计教程10.7.2 影像框(影像框(ImageImage)影像框控件与图片框控件相似影像框控件与图片框控件相似影像框控件只用于显示图片,不能作为容器。影像框控件只用于显示图片,不能作为容器。1 1创建影像框:在工具箱内选取影像框工具创建影像框:在工具箱内选取影像框工具2 2影像框的属性影像框的属性影像框控件使用布局属性和可见、可用属性。影像框控件使用布局属性和可见、可用属性。没有字体属性、颜色属性、坐标属性和绘图属性。没有字体属性、颜色属性、坐标属性和绘图属性。喝迅频阎宵柳谜蜜箕湿痈厂糕仲诈执财尊界厚坦火句草望铁礼埂疥瘪垢赦第10章处理图形pp课件第10章处理图形pp课件55Visual Basic程序设计教程其它主要属性:其它主要属性:(名称)(名称)NameName。影像框控件名称,缺省值为。影像框控件名称,缺省值为Image1Image1。StretchStretch:设置加载的图片是否能自动扩展或缩小以适应:设置加载的图片是否能自动扩展或缩小以适应控件的尺寸,还是影像框去适合图片的大小。缺省值为控件的尺寸,还是影像框去适合图片的大小。缺省值为FalseFalse。StretchStretch为为TrueTrue时,影像框大小不会自动改变,可由影时,影像框大小不会自动改变,可由影像框的大小来调整图片的大小像框的大小来调整图片的大小StretchStretch为为为为False False 时,影像框的大小根据图片大小来时,影像框的大小根据图片大小来自动调整。自动调整。PicturePicture:设置控件内显示的图片文件。:设置控件内显示的图片文件。岸萤秦涸添枯址绦煽饮竣喜尔浦糖忍荣旬邀伯税官沦勃逞各酷箭玲遮便丫第10章处理图形pp课件第10章处理图形pp课件56Visual Basic程序设计教程3 3影像框的事件影像框的事件ClickClick、DblClickDblClick、MouseDownMouseDown、MouseMoveMouseMove、MouseUpMouseUp但没有但没有PaintPaint和和ResizeResize事件。事件。可用可用ImageImage控件创建按钮控件创建按钮( (因识别因识别Click)Click)。4 4影像框的方法影像框的方法可用可用MoveMove方法移动或调整它的大小方法移动或调整它的大小没有绘图方法。没有绘图方法。给甭空枢轰捍喜陶运贸丰橱厚摊笔待谨坑沏萄矣蔬阔犯帜特杠匆耀秤已暑第10章处理图形pp课件第10章处理图形pp课件57Visual Basic程序设计教程5 5加载图片加载图片使用使用PicturePicture属性属性可以在属性窗口中设置可以在属性窗口中设置可以利用函数可以利用函数LoadPictureLoadPicture来设置来设置PicturePicture属性。属性。ImageImage使用较少系统资源,且加载比使用较少系统资源,且加载比PictureBoxPictureBox快。快。当只要求显示图片时,可以选用当只要求显示图片时,可以选用ImageImage控件。控件。然域喜壮忘竭比陌仕份脱吴畜怂杀世宇杯箍玛啃迅凰檬洒移健唱牟馋脑钦第10章处理图形pp课件第10章处理图形pp课件58Visual Basic程序设计教程【例【例10-910-9】利用定时器控件编程,使得】利用定时器控件编程,使得4 4幅图片在幅图片在影像框影像框Image1Image1中轮流显示,当单击中轮流显示,当单击Image1Image1时,将时,将放大的图片显示在放大的图片显示在Image2Image2中。中。控件:控件:个影像框控件:个影像框控件: Stretch Stretch属性设置为属性设置为TrueTrue个定时器控件个定时器控件使用静态变量控制图片显示。使用静态变量控制图片显示。饥未灸绽着悍室缆糠雁脊棒往去涸猴栈蘸嘶捕仔厉宛笼镶殴舔亥棒律误彩第10章处理图形pp课件第10章处理图形pp课件59Visual Basic程序设计教程10.7.2影像框影像框-图片轮流显示图片轮流显示 Private Sub Form_Load() Private Sub Form_Load() 初始化属性初始化属性 Timer1.Interval = 1000 Timer1.Interval = 1000 Image1.Stretch = True: Image2.Stretch = True Image1.Stretch = True: Image2.Stretch = True Image1.ToolTipText = Image1.ToolTipText = 请单击请单击 当鼠标移动到当鼠标移动到Image1Image1上上, ,显示文字显示文字End SubEnd SubPrivate Sub Image1_Click() Private Sub Image1_Click() 复制复制 Image2.Picture = Image1.Picture Image2.Picture = Image1.PictureEnd SubEnd SubPrivate Sub Timer1_Timer()Private Sub Timer1_Timer() Static N As Integer Static N As Integer Image1.Picture = LoadPicture(D:Wen & N & .jpg) Image1.Picture = LoadPicture(D:Wen & N & .jpg) N = (N + 1) Mod 4 N = (N + 1) Mod 4End SubEnd Sub 文件名使用了文件名使用了0.jpg3.jpg0.jpg3.jpg,故可使用字符串表达式:,故可使用字符串表达式: D:Wen & N & .jpg D:Wen & N & .jpg瞪寄黔霜汾剃舀吊妮褐啊掸濒弘熊毛蔓辖纽枯叭畅低辐椭垣认垃环解音挥第10章处理图形pp课件第10章处理图形pp课件60Visual Basic程序设计教程10.7.3 图形复制图形复制PaintPicturePaintPicture方法,可以实现移动图片、复制图片。方法,可以实现移动图片、复制图片。格式:格式:Object.PaintPicture Object.PaintPicture picture,x1,y1,width1,height1,x2,picture,x1,y1,width1,height1,x2, y2, width2,height2 y2, width2,height2对对picturepicture图片中以图片中以(x2,y2)(x2,y2)为左上角,为左上角,width2, height2width2, height2为宽度和高度的图形区域,复制到为宽度和高度的图形区域,复制到ObjectObject以以(x1,y1)(x1,y1)为左上角,宽度和高度为为左上角,宽度和高度为width1,heighwidth1,height1t1的区域中的区域中picturepicture为必需项,表示图形对象源为必需项,表示图形对象源由由FormForm或或PictureBoxPictureBox的的PicturePicture属性所决定。属性所决定。第剪伙舅管瀑预哉塘备堂狞呸敖题檄翟忠督甚竿尹疹父茧紫绚谚戳捷靴驮第10章处理图形pp课件第10章处理图形pp课件61Visual Basic程序设计教程缺省缺省x2,y2, width2,height2x2,y2, width2,height2则表示将整个则表示将整个picturepicture参数指定的图片,复制到参数指定的图片,复制到ObjectObject中。中。例如:例如: ( Pic1 Pic1 和和Pic12Pic12为两个图片框)为两个图片框)Pic1.PaintPicture Pic2.Picture, 0, 0, w1, h1, x2, y2, w2, Pic1.PaintPicture Pic2.Picture, 0, 0, w1, h1, x2, y2, w2, h2h2其中其中(0,0)(0,0)和和(x2, y2)(x2, y2)分别使用分别使用Pic1Pic1和和Pic2Pic2的坐标系统。的坐标系统。焉履称榔坍狈挠变妈昨坦哗檀漓铸嘲涂葱绢恩控锈柏鹤价乏诧沿的鼠字铃第10章处理图形pp课件第10章处理图形pp课件62Visual Basic程序设计教程【例【例10-1010-10】图形复制。有两张图片放入影像框中,】图形复制。有两张图片放入影像框中,单击任何一个,复制到图片框中央。单击任何一个,复制到图片框中央。控件:控件:建立有建立有2 2个元素的个元素的ImageImage控件数组控件数组Img1Img1 (0) (0)和和Img1(1)Img1(1)建立建立1 1个图片框控件个图片框控件PicShowPicShow设置各对象(名称)属性。设置设置各对象(名称)属性。设置2 2个个ImageImage控件数控件数组元素的组元素的StretchStretch属性为属性为TrueTrue。豺牟酪聚千努临抄震美孝初糜军督针胆券厂峨赫隆间涤灰窄传驭污梭杜录第10章处理图形pp课件第10章处理图形pp课件63Visual Basic程序设计教程Private Sub Form_Load()Private Sub Form_Load() Img1(0).Picture = LoadPicture(e:fengtempAPPWIZ.ICO) Img1(0).Picture = LoadPicture(e:fengtempAPPWIZ.ICO) Img1(1).Picture = LoadPicture(e:fengtempface.ico) Img1(1).Picture = LoadPicture(e:fengtempface.ico) PicShow.FontSize = 15 PicShow.FontSize = 15End SubEnd SubPrivate Sub Img1_Click(Index As Integer)Private Sub Img1_Click(Index As Integer) Dim t As String Dim t As String t = t = 左右左右 PicShow.Cls PicShow.Cls PicShow.Print PicShow.Print 你点中你点中 & Mid(t, Index + 1, 1) & & Mid(t, Index + 1, 1) & 边的图片:边的图片: PicShow.PaintPicture Img1(Index).Picture, _ PicShow.PaintPicture Img1(Index).Picture, _ PicShow.Width/2 - Img1(Index).Width/2, _ PicShow.Width/2 - Img1(Index).Width/2, _ PicShow.Height/2 - Img1(Index).Height/2, _ PicShow.Height/2 - Img1(Index).Height/2, _ Img1(Index).Width, Img1(Index).Height Img1(Index).Width, Img1(Index).Height 复制复制到中央到中央End SubEnd Sub垫置左搀算撤农氰匡溯眷摔墩刻考沈床又烷泼氓缕编倪傍镁天钥冰溉咆门第10章处理图形pp课件第10章处理图形pp课件64Visual Basic程序设计教程10.7.4 色彩色彩使用使用BackColorBackColor、ForeColorForeColor、BorderColorBorderColor、FillColorFillColor属性可设置颜色属性可设置颜色颜色的设置可以使用颜色常量,也以使用颜色的设置可以使用颜色常量,也以使用QBColorQBColor函数或函数或RGBRGB函数。函数。驳德福摆壕犊郊巴变潦芯督涸撵飘阳屁检虐窿则逼韶卒真款鼎晴诧赤拇箔第10章处理图形pp课件第10章处理图形pp课件65Visual Basic程序设计教程与颜色有关的其它方法:与颜色有关的其它方法:PointPoint方法可以获得某点颜色值,基本格式为:方法可以获得某点颜色值,基本格式为: 对象名对象名. Point(x, y). Point(x, y)该方法将返回一个长整型的该方法将返回一个长整型的RGBRGB颜色值。颜色值。例如:例如:PointColor = Point (500, 500)PointColor = Point (500, 500)如果要对某个长整型颜色值如果要对某个长整型颜色值A A,区分其红、绿和,区分其红、绿和蓝蓝3 3种颜色成分,可以使用以下表达式:种颜色成分,可以使用以下表达式:Red = A Mod 256 : Green = A 256 Mod 256 Red = A Mod 256 : Green = A 256 Mod 256 Blue = A 256 256Blue = A 256 256眉喂殖镇菏砒虹枢畦翌巍拖弥豌酬勉婿粤绣湘醒其泡镁肚寸蕉课苹吻露舷第10章处理图形pp课件第10章处理图形pp课件66Visual Basic程序设计教程10.8.1 房子和太阳房子和太阳【例【例10-1110-11】使用绘线、绘圆、绘点的方法,画出】使用绘线、绘圆、绘点的方法,画出如图所示的图形(不含数字)。如图所示的图形(不含数字)。因为太阳周围要画出多条直因为太阳周围要画出多条直 线作为光,可将坐标系原点线作为光,可将坐标系原点 移到太阳的中心点上,循环移到太阳的中心点上,循环 完成光芒绘制。完成光芒绘制。其它直线在确定坐标点后,一条一条地画其它直线在确定坐标点后,一条一条地画诸疵芽杨篆狈垄逐成培叔矩派显帜蛔挺毋奴嘛萍铣翻痹槛迹双讯卵亚沤屹第10章处理图形pp课件第10章处理图形pp课件67Visual Basic程序设计教程Private Sub Command1_Click()Private Sub Command1_Click()Const PI = 3.1415926Const PI = 3.1415926Dim i As SingleDim i As SingleCls : Scale (-110, 30)-(30, -80) Cls : Scale (-110, 30)-(30, -80) 更改坐标系更改坐标系FillStyle = 0: FillColor = vbRed FillStyle = 0: FillColor = vbRed 画太阳画太阳Circle (0, 0), 10, vbRedCircle (0, 0), 10, vbRedFor i = 0 To 2 * PI Step PI / 10 For i = 0 To 2 * PI Step PI / 10 画光芒画光芒 Line (15 * Cos(i), 15 * Sin(i)-(25 * Cos(i), 25 * Sin(i) Line (15 * Cos(i), 15 * Sin(i)-(25 * Cos(i), 25 * Sin(i)Next iNext iFillStyle = 1 FillStyle = 1 开始画房子(连续画开始画房子(连续画8 8条直线)条直线)Line (-80, -20)-(-30, -20) Line (-80, -20)-(-30, -20) 先画房顶最上面一水平线先画房顶最上面一水平线Line -(-20, -30): Line -(-70, -30): Line -(-80, -20) Line -(-20, -30): Line -(-70, -30): Line -(-80, -20) 前次终点作本次起前次终点作本次起点点Line -(-90, -30): Line -(-88, -30) Line -(-90, -30): Line -(-88, -30) 至此,房顶画完至此,房顶画完Line -(-88, -65): Line -(-70, -70) Line -(-88, -65): Line -(-70, -70) 画侧面的墙画侧面的墙Line (-70, -30)-(-22, -70), , B Line (-70, -30)-(-22, -70), , B 用矩形画正面的墙用矩形画正面的墙Line (-60, -45)-(-50, -60), , B: Line (-55, -45)-(-55, -60) Line (-60, -45)-(-50, -60), , B: Line (-55, -45)-(-55, -60) 画窗画窗Line (-40, -45)-(-30, -70), , B Line (-40, -45)-(-30, -70), , B 画门画门DrawWidth = 3 : PSet (-38, -55) DrawWidth = 3 : PSet (-38, -55) 画门把手画门把手DrawWidth = 1 DrawWidth = 1 恢复缺省值恢复缺省值End SubEnd SubPrivate Sub Form_Load()Private Sub Form_Load()AutoRedraw = TrueAutoRedraw = TrueEnd SubEnd Sub宜呐汗键帚茨职科婪攻哺盂褂耿沪还帘界绍沪橇颤咨患瓷凹岔炮企朵敖缩第10章处理图形pp课件第10章处理图形pp课件68Visual Basic程序设计教程10.8.2 制作拼图制作拼图【例【例10-1210-12】某单位职工,】某单位职工,20292029、30393039、40494049、50595059各年龄段人数分别为各年龄段人数分别为5 5人、人、7 7人、人、1010人、人、8 8人,人,退休职工退休职工1515人。制作表示各年龄段人员分布情况人。制作表示各年龄段人员分布情况的饼图。的饼图。因各段加起来为因各段加起来为100%100%,即为,即为1 1 个圆,角度即为个圆,角度即为22礼臻艳翔职零拂砷蝴玉猖汾慑锋弥布时飘男峦史仅撅淋号楼里亚世氮拢荒第10章处理图形pp课件第10章处理图形pp课件69Visual Basic程序设计教程各段人数所占比例各段人数所占比例*2*2就是扇形的弧度就是扇形的弧度根据弧度即可制作各实心扇形构成饼图。根据弧度即可制作各实心扇形构成饼图。同时把相应的颜色用画矩形的方法显示在图片框中,同时把相应的颜色用画矩形的方法显示在图片框中,并在边上标出人数。并在边上标出人数。 疮薄疚鸿娜疙驶闺徽茅础宇蒋帽韭佰贮洗先婚淬毗桑闻陈絮懦邯旱顺皑喇第10章处理图形pp课件第10章处理图形pp课件70Visual Basic程序设计教程Private Sub Command1_Click()Private Sub Command1_Click()Const PI = 3.1415926Const PI = 3.1415926Dim Man, Alpha() As Single, Sum As Integer, i As IntegerDim Man, Alpha() As Single, Sum As Integer, i As IntegerDim A As Single, B As Single, N As Integer aDim A As Single, B As Single, N As Integer a起始角,起始角,b b扇形终止角扇形终止角Man = Array(5, 7, 10, 8, 15) Man = Array(5, 7, 10, 8, 15) 包含各段人数的数组元素初始化包含各段人数的数组元素初始化Sum = 0: N = UBound(Man) + 1 nSum = 0: N = UBound(Man) + 1 n为元素个数为元素个数For i = 0 To N For i = 0 To N 1: Sum = Sum + Man(i) : Next i 1: Sum = Sum + Man(i) : Next i 求总人数求总人数ReDim Alpha(N - 1) ReDim Alpha(N - 1) 存放各人数段对应扇形的弧度存放各人数段对应扇形的弧度A = 0.00001 A = 0.00001 因负因负0 0不能被表示,所以用不能被表示,所以用0 0的近似值的近似值FillStyle = 0: Picture1.FillStyle = 0 FillStyle = 0: Picture1.FillStyle = 0 窗体和图片框都绘制实心图形窗体和图片框都绘制实心图形For i = 0 To N - 1 For i = 0 To N - 1 绘制扇形、图片框中图例及输出人数绘制扇形、图片框中图例及输出人数 Alpha(i) = 2 * PI * Man(i) / Sum Alpha(i) = 2 * PI * Man(i) / Sum 计算扇形对应的弧度计算扇形对应的弧度 FillColor = QBColor(2 * i): Picture1.FillColor = QBColor(2 * i) FillColor = QBColor(2 * i): Picture1.FillColor = QBColor(2 * i) B = A + Alpha(i) B = A + Alpha(i) 计算终止角的弧度计算终止角的弧度 If B 2 * PI Then B = B - 2 * PI If B 2 * PI Then B = B - 2 * PI 弧度不能大于弧度不能大于22 Circle (ScaleWidth / 2, ScaleHeight / 2), ScaleWidth / 4, , -A, -B Circle (ScaleWidth / 2, ScaleHeight / 2), ScaleWidth / 4, , -A, -B 绘扇形绘扇形 Picture1.Line (0, i * Picture1.ScaleHeight / N)- _ Picture1.Line (0, i * Picture1.ScaleHeight / N)- _(Picture1.ScaleWidth / 2, (i + 1) * Picture1.ScaleHeight / N), , B(Picture1.ScaleWidth / 2, (i + 1) * Picture1.ScaleHeight / N), , B绘矩形绘矩形 Picture1.CurrentY = i * Picture1.ScaleHeight / N Picture1.CurrentY = i * Picture1.ScaleHeight / N 确定确定PrintPrint位置位置 Picture1.Print Man(i) Picture1.Print Man(i) 输出人数输出人数 A = B A = B 将已输出的终止角作下一次的起始角将已输出的终止角作下一次的起始角Next iNext iEnd SubEnd Sub雷裔盲膀讳智卖方咯楚奴崇提罩通违计钎锭豫均阮跪膳蹦绪啄燃墨阻呈闯第10章处理图形pp课件第10章处理图形pp课件71Visual Basic程序设计教程 Private Sub Form_Load() Private Sub Form_Load() 属性初始化属性初始化Form1.AutoRedraw = True: Picture1.AutoRedraw = TrueForm1.AutoRedraw = True: Picture1.AutoRedraw = TrueLabel1.Caption = Label1.Caption = “各年龄段人员分布图各年龄段人员分布图”Label1.AutoSize = TrueLabel1.AutoSize = TrueLabel1.Left = (Form1.ScaleWidth - Label1.Width) / 2Label1.Left = (Form1.ScaleWidth - Label1.Width) / 2End SubEnd Sub其中其中Picture1.ScaleHeight / nPicture1.ScaleHeight / n,表示,表示 将图片框的高度分成将图片框的高度分成n n等分,每一份显示等分,每一份显示 一个图例。一个图例。征揣划悼乏哨酶棚痹拍获蝉霞纽唱睁腥咏沃丑雇网牺懈钱卧早冤页弧迁龚第10章处理图形pp课件第10章处理图形pp课件72Visual Basic程序设计教程10.8.3 滚动显示大图片滚动显示大图片【例【例10-1310-13】编程:在图片框中滚动显示一张大的】编程:在图片框中滚动显示一张大的图片或照片。运行界面如图。图片或照片。运行界面如图。分析:分析:由于图片框本身没有滚动条,因此由于图片框本身没有滚动条,因此要以图片框为容器,添加滚动条。要以图片框为容器,添加滚动条。为了能看清整个照片的大致图像,可以使用一为了能看清整个照片的大致图像,可以使用一个个StretchStretch为为TrueTrue的影像框控件。的影像框控件。存夕镜参罗奠喘惦媒鸣狡唉碾琳哗话罐孝哥衣埠撤痊皱参募燃弯湾谱涎仿第10章处理图形pp课件第10章处理图形pp课件73Visual Basic程序设计教程不能将查看照片的图片框的不能将查看照片的图片框的AutoSizeAutoSize设为设为TrueTrue,但又希望获得照片上的某一区域图案,解决的但又希望获得照片上的某一区域图案,解决的方法是再增加一个图片框方法是再增加一个图片框Picture2Picture2,让它的,让它的AutoSizeAutoSize设为设为TrueTrue,同时又让它的,同时又让它的VisibleVisible属属性设为性设为FalseFalse,只把它作为源图片。,只把它作为源图片。当滚动条滚动时,根据滚动条的值,把当滚动条滚动时,根据滚动条的值,把Picture2Picture2中与中与Picture1Picture1相同大小的一块区域,通过相同大小的一块区域,通过PaintPicturePaintPicture方法复制到方法复制到Picture1Picture1中。中。奎铺辑清莲咬婚聊秀碾讫迄元煌芳钦虫逸菩厉与椅肋利徊围捌掀磊诺熏女第10章处理图形pp课件第10章处理图形pp课件74Visual Basic程序设计教程Private Sub MovePic() Private Sub MovePic() 按滚动条的值复制图片按滚动条的值复制图片 Picture1.PaintPicture Picture2.Picture, 1, 1, Picture1.PaintPicture Picture2.Picture, 1, 1, Picture1.Width, _Picture1.Width, _ Picture1.Height, HScroll1.Value, VScroll1.Value, _ Picture1.Height, HScroll1.Value, VScroll1.Value, _ Picture1.Width, Picture1.Height Picture1.Width, Picture1.HeightEnd SubEnd Sub啪滓造芯回躁揣墓丝贰判漆胀国殖查轰肢黍参舅先芒涣郴乓沼龋尉壬岂姜第10章处理图形pp课件第10章处理图形pp课件75Visual Basic程序设计教程Private Sub Command1_Click() Private Sub Command1_Click() 显示按钮显示按钮 Dim s As String Dim s As String On Error GoTo A1 On Error GoTo A1 为防止输入的文件标识有错,设置出错处理为防止输入的文件标识有错,设置出错处理 Picture1.Visible = False Picture1.Visible = False 万一文件标识有错,先设它们不可见万一文件标识有错,先设它们不可见 s = InputBox( s = InputBox(请输入要显示的文件的标识请输入要显示的文件的标识(d:pathfilename.ext)(d:pathfilename.ext) If Len(Trim(s) = 0 Then GoTo A1 If Len(Trim(s) = 0 Then GoTo A1 不允许出现空格文件名不允许出现空格文件名 Picture2.Picture = LoadPicture(s) Picture2.Picture = LoadPicture(s) 加载源图片加载源图片 HScroll1.Max = Picture2.Width - Picture1.Width HScroll1.Max = Picture2.Width - Picture1.Width 设置滚动条最大值设置滚动条最大值 VScroll1.Max = Picture2.Height - Picture1.Height VScroll1.Max = Picture2.Height - Picture1.Height Call Movepic: Picture1.Visible = True Call Movepic: Picture1.Visible = True 设置设置Picture1Picture1初始图像,并可见初始图像,并可见 Image1.Picture = Picture2.Picture Image1.Picture = Picture2.Picture 设置设置Image1Image1的显示图像的显示图像 Exit Sub Exit SubA1: MsgBox A1: MsgBox 文件名或路径错误文件名或路径错误!, vbCritical, !, vbCritical, 出错出错 出错处理出错处理End SubEnd Sub沫钠辞琼衡扫铜辐肤裔试唁戴久痕匝脆悦皿羔虽悍杂卉脆贯综聋检怀捕栖第10章处理图形pp课件第10章处理图形pp课件76Visual Basic程序设计教程 Private Sub Command2_Click() Private Sub Command2_Click() 退出按钮退出按钮 End EndEnd SubEnd SubPrivate Sub Form_Load() Private Sub Form_Load() 初始化图片框和影像框属性初始化图片框和影像框属性 Picture2.AutoSize = True: Picture2.Visible = False Picture2.AutoSize = True: Picture2.Visible = False Picture1.AutoRedraw = True: Picture1.Visible = False Picture1.AutoRedraw = True: Picture1.Visible = False Image1.Stretch = True Image1.Stretch = TrueEnd SubEnd SubPrivate Sub VScroll1_Change() Private Sub VScroll1_Change() 垂直滚动条改值时调用垂直滚动条改值时调用MovePicMovePic MovePicEnd SubEnd Sub汐枝割辆时佐回兄射棺慷氖国册牵赏钝码品兰锅邦氏抒揍评坐赫怯泻舞梯第10章处理图形pp课件第10章处理图形pp课件77Visual Basic程序设计教程 Private Sub HScroll1_Change() Private Sub HScroll1_Change() 水平滚动条改值时调用水平滚动条改值时调用MovePicMovePic MovePicEnd SubEnd Sub程序运行时,只要输入合法文件标识,并确实程序运行时,只要输入合法文件标识,并确实是图片文件,就会正常显示,否则给出出错信息。是图片文件,就会正常显示,否则给出出错信息。叛相担啄践剿羔午宦蓑陆冒觉筏拉盘改化听泣桶挨伸决围着柴犯臂挤邀妆第10章处理图形pp课件第10章处理图形pp课件78Visual Basic程序设计教程
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号