ImageVerifierCode 换一换
格式:DOCX , 页数:59 ,大小:258.38KB ,
资源ID:8911244      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/8911244.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(VB程序设计 第十章图形操作.docx)为本站会员(b****8)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

VB程序设计 第十章图形操作.docx

1、VB程序设计 第十章 图形操作第十章 图 形 操 作主要内容 图形操作基础 绘图属性 图形控件 图形方法 应用图形操作基础要点默认坐标系坐标系-用scale方法定义属性:ScaleLeft、ScaleTop、ScaleHeight、ScaleWidth、Top、Left、Height、Width绘图属性要点窗体和图形控件(PictureBox)有:DrawWidth 用图形方法绘线的宽度DrawStyle用图形方法绘线的形状(DrawWidth =1时有效)FillColor用图形方法绘制封闭图形中的填充色FillStyle 用图形方法绘制封闭图形的填充线方式(0-7共8种)ForeColor

2、 - 用图形方法绘制图形的边框颜色(图形方法的颜色参数设置优先)形状控件Shape有:Shape 选择控件的几何形状(0-5共6种)BorderWidth 控件的边框线宽BorderStyle 控件的边框线形状(BorderWidth=1时有效)BorderColor 控件的边框颜色FillColor 控件的填充线的颜色FillStyle 控件中的填充图案样式BackColor 控件图像的背景色(BackStyle属性应设置为不透明(opaque)才有效)Line控件有DrawMode 控件BorderWidth 控件的线宽BorderStyle 控件的线样式BorderColor 控件的线颜

3、色X1 -控线的起点坐标Y1 - 控件的起点坐标X2 - 控件的终点坐标Y2 - 控件的终点坐标公有属性DrawMode 图形控件或图形方法的新像素和原有像素的组合方式(1-16共16种)图形控件要点:PictureBox(图形框) 重要属性 Autosize、 Picture 装入图形方法LoadPictureImage(图像框) 重要属性 Stretch 、Picture 装入图形方法LoadPictureShape(形状) 重要属性 Shap 图形几何形状Line(画线工具)图形方法Pset 画点Line 画线Cricle 画圆Point 取点的颜色值应用要点:几何图形绘制简单动画设计图

4、形漫游图形处理技术改变窗体外观加入后台音乐 10.1 图形操作基础Visual Basic提供的图形控件主要有Picture Box(图形框)、Image(图像框)、Line(画线控件)、Shape(形状控件)。提供的图形方法有Line、Circle、Pset和Point等。为了方便图形操作,Visual Basic提供了系统标准坐标系和用户自定义坐标系两种方式的坐标系。10.1.1 坐标系统 每个容器都有一个坐标系,构成一个坐标系,需要三个要素:坐标原点、坐标度量单位、坐标轴的长度与方向。属性 ScaleTop、ScaleLeft用于控制容器对象左边和顶端的坐标,根据这两个值来确定坐标原点。

5、所有对象的这两个属性的默认值为0,即坐标原点在对象的左上角。属性 ScaleHeight和ScaleWidth确定对象内部水平方向和垂直方向的单元数。属性ScaleMode决定容器对象的坐标度量单位。坐标系单位有8种形式。缺省单位是Twip。每英寸1440个Twip,20个Twip为一磅。ScaleMode属性设置一览表属性设置单位0用户定义(User)1twip(默认值)2磅(point,每英寸72磅)3像素(pixed,与显示器分辨率有关)4字符(默认高为12磅,宽20磅的单位)5英寸(inch)6毫米(millimeter)7厘米(centimeter)度量单位转换使用 ScaleX和S

6、caleY方法,格式如下:对象.ScaleX(转换值,原坐标单位,转换坐标单位)对象.ScaleY(转换值,原坐标单位,转换坐标单位)Private Sub Form_Load()x = ScaleX(45, 1, 7) 将45由Twip转换成厘米 7.937508E-02y = ScaleY(45, 1, 6) 将45由Twip转换成毫米0.7937508MsgBox x & & yEnd Sub无论采用那种坐标度量单位,默认坐标原点在对象的左上角,横向向右为X轴的正向,纵向向下为Y轴的正向。当新建一个窗体时,窗体采用默认坐标系,属性Height=3600(包括标题栏和水平边框的宽度),Wi

7、dth=4800(包括垂直边框的宽度)。而属性 ScaleLeft=0,ScaleTop=0,Scaleheight=3195,ScaleWidth=468010.1.2 自行定义坐标系方法一:通过ScaleTop,ScaleLeft,ScaleWidth和ScaleHeight属性实现。对象的左上角坐标为(ScaleLeft,ScaleTOP),右下角的坐标为(ScaleWidth+ScaleLeft,ScaleHeight+ScaleTop)。根据左上角和右下角坐标值的大小自动设置坐标轴的正向。X轴与Y轴的度量单位分别是1/ScaleWidth和1/ScaleHeight。方法二:采用Sc

8、ale方法来设置坐标系:格式:对象.Scale (xLeft,yTop)(xRight,yBotton)对象可以使窗体、图形框和打印机。如省略对象名,则为带有焦点的窗体对象。(xLeft,yTop)表示定义对象的左上角坐标,(xRight,yBotton)则表示定义对象的右下角坐标。VB根据Scale方法给定的参数自动计算出对象的属性ScaleLeft、ScaleTop、ScaleHeight、ScaleWidth的值。计算的方法如下:ScaleLeft=xLeftScaleTop=YtopScaleHeight=yBottom-yTopScaleWidth=xRight-xLeft由此式子可

9、得出一个对象的ScaleHeight和 ScaleWidth也可能是一个负值,但是对象的Width 和Height属性值则不随Scale的定义而发生变化,永远保持一个正值。例10.1 在Form_Paint 事件中定义窗体的坐标系。例10.1在myvbvb10ex10_1lbc10_1.vbpPrivate Sub Form_Load() ClsForm1.AutoRedraw = TrueForm1.Scale (-200, 250)-(300, -150) 在窗体中设置坐标系 Line (-200, 0)-(300, 0) 画X轴 Line (0, 250)-(0, -150) 画Y轴 C

10、urrentX = 0: CurrentY = 0: Print 0 标记坐标原点 CurrentX = 280: CurrentY = 40: Print X 标记X轴 CurrentX = 5: CurrentY = 240: Print Y 标记Y轴End Sub说明:可在程序中使用Scale方法改变坐标系统。当Scale方法不带参数时,取消用户定义的坐标系,恢复缺省坐标系。改变坐标系后产生的影响:例10.1a 观察画线Line(0,0) - (1000,1000) 在不同坐标系中的效果例10.1a在myvbvb10ex10_1albc10_1a.vpbPrivate Sub Comma

11、nd1_Click() 缺省坐标ClsScale 采用缺省坐标系缺省坐标系(xLeft,yTop)=(ScaleTop,ScaleLeft)=(0,0)(xRight,yBottom)=(ScaleLeft+ScaleWidt,ScaleTop+ScaleHeight)=(4680,3195)Line (0, 0)-(1000, 1000)End SubPrivate Sub Command2_Click() 用户定义ClsForm1.Scale (0, 1000)-(1000, 0) 定义用户坐标系Line (0, 0)-(1000, 1000)End Sub例10.1b 控件对象在坐标系内

12、与X轴和Y轴的位置保持相对不变例10.1b在myvbvb10ex10_1blbc10_1b.vpbPrivate Sub Coordinate() Cls Line (0, 0)-(5400, 0) 画线 Line (0, 0)-(0, 3800) Label1.Caption = Form.ScaleLeft= & Form1.ScaleLeft & vbCrLf _ & Form.ScaleTop = & Form1.ScaleTop Picture1.Top = 1080: Picture1.Left = 1080 label2.Caption=0,label3.Caption=Y,la

13、bel4.Caption=X,vbCrLf相当于chr(13) Label2.Top = 120: Label2.Left = 120 Label3.Top = 3240: Label3.Left = 120 Label4.Top = 120: Label4.Left = 5340End SubPrivate Sub Command1_Click() 左移 结果坐标轴线和图形框向左上角推进渐渐从窗体上消失 Form1.ScaleLeft = 100 + Form1.ScaleLeft 改变坐标系统 Form1.ScaleTop = 100 + Form1.ScaleTop Coordinate

14、 调用子过程End SubPrivate Sub Command2_Click() 右移 结果坐标轴线和图形框向右下角推进渐渐从窗体上消失 Form1.ScaleLeft = Form1.ScaleLeft 100 改变坐标系统 Form1.ScaleTop = Form1.ScaleTop - 100 Coordinate 调用子过程End Sub10.1.3 图形层VB在构造图形时,在三个不同的屏幕层次上放置图形的可视组成部分。就视觉效果而言,最上层离用户最近,而最下层离用户最远。图形层放置的对象一览表层次对象类型最上层工具箱中除标签、线条、形状,image外的控件对象中间层标签、线条、形

15、状控件对象和image最下层由图形方法所绘制的图形位于上层的对象会覆盖下层相同位置的任何对象,即使下层对象在上层对象后面绘制。处于同一图形层的对象的叠放顺序与操作有关,后绘在前绘上面。同一图形层内控件对象排列顺序称为Z序列。设计时可通过格式菜单中的顺序命令调整Z序列。运行时可通过Zorder方法将特定的对象调整到同一图层的前面或后面。如果控件不属于同一层,则Zorder方法无效。Zorder方法的语法格式为: 对象.Zorder positionposition =0 表示该控件被定位于Z序列的前面position = 1表示该控件被定位于Z序列的后面 例10.2 Zorder方法的使用例10

16、.2在myvbvb10ex10_2lbc10_2.vpbPrivate Sub Command1_Click(Index As Integer) command1为命令按钮组 Command1(Index).ZOrder 0 单击哪个按钮,哪个按钮就在最前面出现End SubPrivate Sub Form_Load() Dim i For i = 1 To 4 Load Command1(i) 设计命令按钮组 Command1(i).ToolTipText = Command & i 给按钮加提示 Command1(i).Left = Command1(i - 1).Left + 250 确

17、定出现位置 Command1(i).Top = Command1(i - 1).Top + 300 Command1(i).Visible = True 使其可见 Command1(0).Style = 1 命令按钮可以加载图标只允许在属性窗口设置 Select Case i Case 1 Command1(i).Picture = LoadPicture(App.Path + Cut.bmp) Case 2 Command1(i).Picture = LoadPicture(App.Path + copy.bmp) Case 3 Command1(i).Picture = LoadPictu

18、re(App.Path + paste.bmp) Case 4 Command1(i).Picture = LoadPicture(App.Path + OPEN.bmp) End Select Next i Command1(0).Picture = LoadPicture(App.Path + save.bmp) Command1(0).ToolTipText = Command0End Sub例10.2b 设计一个开关。先画一个picture1控件在窗体上然后将开关(ON)图标装入Picture1内,因此Picture1控件的层次关系属于最底层,再在窗体上画一个picture2控件然后将

19、开关(OFF)图标装入Picture2内,因此,Picture2对Picture1来说,图层属于上层。这样,无论你怎样移动这两个控件OFF始终覆盖ON(只要重叠)。例10.2b在myvbvb10ex10_2blbc10_2b.vpbPrivate Sub Picture1_Click() ON 开关(红色) Picture2.ZOrder 0 呈现白开关 Image2.ZOrder 0 呈现白灯End SubPrivate Sub Picture2_Click() OFF 开关(白色) Picture1.ZOrder 0 呈现红开关 Image1.ZOrder 0 呈现黄灯End Sub10.

20、2 绘图属性10.2.1 当前坐标 CurrentX,CurrentY属性给出窗体或图形框或打印机在绘图时的当前坐标。这两个属性在设计阶段不能使用。坐标(x,y)表示所在对象的绝对坐标,而Step( x, y)则表示在对象上的相对坐标位置,即从当前坐标平移x,y个单位,其绝对坐标为(CurrentX+x,CurrentY+y)。 使用Cls方法后,CurrentX=0,CurrentY=0例10.3利用CurrentX,CurrentY属性在窗体上输出100个。例10.3在myvbvb10ex10_3lbc10_3.vpbPrivate Sub Form_paint() 自动执行 Dim i

21、As Integer Randomize 语句,每次运行产生不同序列的随机数 For i = 1 To 100 CurrentX = Form1.Width * Rnd CurrentY = Form1.Height * RndForm1.ForeColor = RGB(CurrentX* Rnd, CurrentY* Rnd, Form1.Height * Rnd) 置色 Print Next iEnd Sub6.2.2 线宽与线型窗体、图形框或打印机的DrawWidth属性给出在这些对象上所画线的宽度或点的大小。DrawWidth属性以像素为单位来度量,最小值为1。在窗体或图形框或打印机上

22、用它们的的DrawStyle属性给出在这些对象上用画图方法所绘出线的形状(对线和形状控件所绘出的线、框不起作用)。DrawStyle属性设置一览表设置值常量线 型图 示0vbSolid实线(缺省)1vbDash长划线2vbDot点线3vbDashDot点划线4vbDashDotDot点点划线5vbInvisible透明线6vbInsideSolid内实线以上线型仅当DrawWidth属性值为1时才能产生。当DrawWidth的值大于1且DrawStyle的值为1-4,都只能产生实线效果,而DrawStyle=6时,所画的内实线仅当是封闭线时起作用。使用图形控件,则是通过BorderWidth属

23、性定义线的宽度或点的大小,通过BorderStyle属性给出所画线的形状。使用bordercolor属性置线色例10.4 线状示例(DrawWidth 和 DrawStyle)例10.4在myvbvb10ex10_4lbc10_4.vpbPrivate Sub Form_load() Dim i%, y%, a%(0 To 6) a(0) = vbSolid: a(1) = vbDash: a(2) = vbDot 赋线状常数 a(3) = vbDashDot: a(4) = vbDashDotDot: a(5) = vbInvisible a(6) = vbInsideSolid Form1

24、.AutoRedraw = True 使用load事件必须有,否则不可画出线 DrawWidth = 1 置线宽 For i = 0 To 6 DrawStyle = a(i) 置线状(即实、点、长点等线) y = (300 * i) + 200 Form1.ForeColor = QBColor(i) 置色 Line (300, y)-(3000, y) CurrentX = 3020 Print i; a(i); Choose(i + 1, vbSolid, vbDash, _ vbDot, vbDashDot, vbDashDotDot, vbInvisible, vbInsideSol

25、id) Next i 从输出结果看,a(i)内是0-6的整数值 Line (100, 2500)-(4000, 2500) DrawWidth = 10 置线宽 Form1.ForeColor = RGB(0, 192, 0) Line (400, 2500)-(3000, 2500)End Sub例10.4a 改变DrawStyle属性值在窗体上画出不同形状的线形,通过改变DrawWidth属性值画一系列宽度递增的直线。例10.4a在myvbvb10ex10_4albc10_4a.vpbPrivate Sub Form_Click() Dim j As Integer CurrentX =

26、0 设置开始位置 CurrentY = ScaleHeight / 2 DrawWidth = 定义线的宽度为1 For j = 0 To 6 DrawStyle = j 定义线的形状 ForeColor = QBColor(j) 设置颜色 Line -Step(ScaleWidth / 15, 0) 画线 ,Y坐标不动,X 坐标相对移动ScaleWidth / 15 Next j For j = 1 To 6 DrawWidth = j * 3 定义线的宽度 ForeColor = QBColor(j) 设置颜色 Line -Step(ScaleWidth / 15, 0) 画线 Next

27、jEnd Sub6.2.3 填充与色彩用图形方法绘制的封闭图形的填充方式由FillStyle、FillColor这两个属性决定。(对形状控件绘出的封闭图形也适用)FillColor指定填充图案的颜色,默认的颜色同ForeColor。FillStyle指定填充的图案,共有8中内部图案。FillStyle属性设置一览表设置值常 数说 明0vbFSSolid以FillColor绘制实心四方形1vbFSTransParent透明(缺省值)2vbHorizontalLine水平线3vbVerticalLine垂直线4vbUpwardDiagonal左上到右下斜线5vbDownwardDiagonal右上

28、到左下斜线6vbCross网状格线7vbDiagonalCross网状斜线例10.5 八种填充图案示例(用Line方法作图)例10.5在myvbvb10ex10_5lbc10_5.vpbDim x0%, x1%, y0%, k%, y1%Private Sub mnuClean_Click() 擦除 Cls x0 = 200: x1 = 800: k = 100: y0 = 200: y1 = 800End SubPrivate Sub Form_Load() 准备初值 x0 = 200: x1 = 800: k = 100: y0 = 200: y1 = 800End SubPrivate

29、Sub mnufillColor_Click() 填充色 CommonDialog1.ShowColor Form1.FillColor = CommonDialog1.ColorEnd SubPrivate Sub mnuvbCross_Click() 网状格线FillStyle = vbCrossdraw vbCrossEnd SubPrivate Sub mnuvbDiagonalCross_Click() 网状斜线FillStyle = vbDiagonalCrossdraw vbDiagonalCrossEnd SubPrivate Sub mnuvbDownwardDiagonal_Click() 右上到左下斜线FillStyle = vbDownwardDiagonaldraw vbDownwardDiagonalEnd SubPrivate Sub mnuvbFSTransparent_Click() 透明 (缺省值) FillStyle = vbFSTransparent draw vbFSTransparentEnd SubPrivate Sub mnuvbHorizontalLine_Cl

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1