二级特训-图形控件.doc_第1页
二级特训-图形控件.doc_第2页
二级特训-图形控件.doc_第3页
二级特训-图形控件.doc_第4页
二级特训-图形控件.doc_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

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

文档简介

149第5章 图形控件和图形方法图形控件和图形方法5.1 VB坐标系坐标系是绘图的基础。能够将其他对象置于其中的对象被称为容器。容器内的对象只能在容器范围内变动,当移动容器时,容器内的对象也跟着移动,而且与容器的相对位置保持不变。5.1.1 容器坐标系在VB中,每个容器都有一个坐标系,坐标系中的X轴向右、Y轴向下延伸。控件定位都要使用容器的坐标系。 控件在容器中的位置属性控件在容器中的位置属性包括Top属性和Left属性,它们的值是相对于控件所在容器坐标原点的值。 控件自身宽度、高度的属性 Width属性(数值类型) Height属性(数值类型) 容器(窗体、图片框)的坐标属性在VB中,还有一些属性是可作为容器的、可以在上面输出图形或文字的控件(窗体、图片框)所特有的,它们是: ScaleLeft属性(数值类型):该属性值为容器左上角的横坐标,缺省值为0。 ScaleTop属性(数值类型):该属性值为容器左上角的纵坐标,缺省值为0。 ScaleWidth属性(数值类型):该属性值为容器自身的宽度值。 ScaleHeight属性(数值类型):该属性值为容器自身的高度值 CurrentX、CurrentY属性(数值类型):分别表示当前点在容器内的横坐标、纵坐标。设置CurrentX、CurrentY属性后,所设值就是下一个输出方法的当前位置。 Form1.CurrentX = 1500 : Form1.CurrentY = 800 : Print 15.1.2 改变容器坐标系的Scale方法容器坐标系中,坐标系刻度单位的缺省值为“缇”(1缇0.01764毫米),容器的最小坐标值为左上角坐标,容器的最大坐标值为右下角坐标。利用Scale方法可以改变原点的坐标并随之改变最大坐标值:格式:容器名.Scale (x1,y1)-(x2,y2)该语句功能:改变容器(缺省容器名指窗体)原点坐标为(x1,y1),最大坐标值为(x2,y2),将容器在X轴方向分为x2-x1等份、Y轴方向分为y2-y1等份,并将容器的4个坐标属性设置为: 容器名.ScaleLeft = x1 容器名.ScaleTop = y1 容器名.ScaleWidth = x2 - x1 容器名.ScaleHeight = y2 - y1 例如:执行语句“Form1.Scale (-200, -100)-(2000, 1000)”,将改变窗体左上角坐标为(-200,-100)、右下角坐标为(2000,1000),该方法的功能与下面的程序代码等效: ScaleLeft = -200 ScaleTop = -100 ScaleWidth = 2200 ScaleHeight = 1100无参数的引用方法如“容器名.Scale”可以使对该容器有关坐标的属性恢复为缺省值。5.1.3 坐标刻度坐标刻度又称坐标单位,缺省情况采用Twip(缇)为单位。567缇等于一厘米,1440缇等于一英寸。VB程序设计中,经常使用的刻度单位为:缇、磅和毫米。通过设置容器的ScaleMode属性可以选择改变坐标系统的单位。 设置(选择)标准刻度 ScaleMode属性值为1(缺省值):容器坐标系的刻度单位为缇,1缇0.01764毫米0.05磅 ScaleMode属性值为2:容器坐标系的刻度单位为磅,1磅0.353毫米 ScaleMode属性值为3:容器坐标系的刻度单位为像素,是显示器分辨率的最小单位。 ScaleMode属性值为4:容器坐标系的刻度单位为字符,每个字符宽6磅、高12磅。 ScaleMode属性值为5:容器坐标系的刻度单位为英寸。 ScaleMode属性值为6:容器坐标系的刻度单位为毫米。 ScaleMode属性值为7:容器坐标系的刻度单位为厘米。 自定义刻度将ScaleMode值设置为0则采用自定义刻度。用Scale方法设置坐标系后,ScaleMode值自动变为0。反之,ScaleLeft、ScaleTop、ScaleHeight、ScaleWidth属性被改变,ScaleMode值自动变为0,单位长度根据变化后的上述属性重新确定。综上所述: 容器对象(Form和Picture)除具有位置(Left、Top)、大小(Width、Height)属性以外,还有坐标属性(ScaleLeft、ScaleTop、ScaleWidth、ScaleHeight)。容器控件的位置、大小属性均采用其所在容器坐标系的刻度,与容器本身的坐标刻度无关。控件的位置、大小属性也采用其所在容器坐标系的刻度。容器的坐标属性值则以该容器所设置的坐标刻度为单位。 屏幕(Screen)对象可以作为窗体的容器,但它只能提供缺省的坐标系统,其坐标刻度总是为“缇”,不可以改变。因此,窗体的位置(Left、Top)、大小(Width、Height)属性值均采用缇为单位。在引入坐标系统以后,以下几个问题需要读者加以注意: 容器的有关图形绘制的方法,全都以ScaleLeft和ScaleTop属性值为最小值,以ScaleLeft + ScaleWidth、ScaleTop + ScaleHeight为最大值。 容器的所有的图形方法和Print方法,都使用对应容器的坐标系统。 如果在方法中指明容器则采用容器坐标系,否则采用窗体坐标系。 容器的事件过程中,形参表示的鼠标点位为容器坐标系。 MouseDown、MouseUp、MouseMove等事件过程中的形参x、y,其值为事件发生时鼠标在所在容器中的坐标位置。5.2 形状控件和直线控件5.2.1 形状控件工具箱中形状控件的图标为。形状控件缺省的控件名称为:Shape1、Shape2、 形状控件常用属性 Shape属性形状控件用于创建指定的图形,通过设置Shape属性来得到所需要的形状,画出正方形、矩形、圆和椭圆等。Shape属性定义该控件显示的图形。取整数值或系统定义的符号常量,取值及含义如下: 0或VbShapeRectangle:控件形状为矩形 。 1或VbShapeSquare:控件形状为正方形。 2或VbShapeOval:控件形状为椭圆形。 3或VbShapeCircle:控件形状为圆形。 4或VbShapeRoundedRectangle:控件形状为圆角矩形。 5或VbShapeRoundedSquare:控件形状为圆角正方形。 BoderStyle属性(整数06)该属性定义图形边框样式,取值及含义如下: 0:透明,即无边框。 1:实线为缺省值。 2:长虚线。 3:虚线。 4:点划线。 5:双点划线。 6:内插实线,如果BorderWidth属性值大于1,控件保证图形最大尺寸等于设定值。 FillStyle属性(整数07)该属性用于指定图形的填充样式。取值及含义如下: 0:实心填充 1:透明,即不填充,为缺省值。 2:水平线填充。 3:垂直线填充。 4:斜线填充。 5:反斜线填充。 6:网格填充。 7:倾斜网格填充。 其他常用属性 BorderColor:设置边框颜色。 FillColor:设置填充颜色。 BorderWidth:设置边框宽度。 形状控件应用示例例5-4 形状控件示例。 界面设计在窗体上添加6个形状控件,并设计成控件数组,取名为Shape1;2个命令按钮用于控制程序的运行,如图5-8所示。程序运行时,用形状控件画出的图形如图5-9所示。图5-8 例5-4之界面设计 过程设计 Private Sub Command1_Click() For i% = 0 To 5 Shape1(i%).Shape = i% Shape1(i%).FillStyle = i% Shape1(i%).FillColor = QBColor(i% * 2) Shape1(i%).BorderWidth = i% + 1 Next i% End Sub Private Sub Command2_Click() End End Sub5.2.2 直线控件工具箱中直线控件的图标为 。直线控件缺省的控件名称为:Line1、Line2、界面设计时,可以通过鼠标操作调整线段的位置、长短和颜色等属性;程序运行时,可以通过改变直线的端点坐标(x1,y1)、(x2,y2)来移动它或调整它的长短。Line控件通过对BoderStyle属性的设置定义该控件所显示的直线的线形,其不同取值表示不同的线形,分别为透明、实线、长虚线、虚线、点划线、双点划线等。5.3 图形方法5.3.1 使用颜色使用图形方法绘图时总要使用不同的颜色,VB 6.0使用的颜色用一个长整型数(通常用16进制)表示,如&HFFFF00&。其数值由3部分组成:右边的两位(16进制数,下同)代表红色的亮度值,中间的两位代表绿色的亮度值,左边的两位代表蓝色的亮度值。每个亮度值都可以取0到255之间的数值,因此共有一千六百多万种不同的颜色取值。程序运行时,可以使用颜色函数、使用系统预定义颜色常量、直接赋值或使用通用对话框中的“颜色”对话框来指定颜色。 颜色函数VB提供了两个专门处理颜色的函数:RGB和QBColor。 RGB函数RGB(Red,Green,Blue)其中:Red、Green、Blue分别表示红色的亮度值,绿色的亮度值和蓝色的亮度值。取值范围都是0到255。如将窗体Form1的背景色设置为红色,命令如下: Form1.BackColor = RGB(255,0,0) QBColor函数QBColor(Color)其中:Color参数是一个介于0到15的整数,如表5-2所示。例如:将窗体Form1的背景色设置为红色,也可以写作: Form1.BackColor=QBColor(4)表5-2 Color参数的设置值及对应的颜色参数值颜 色参数值颜 色0黑色8灰色1蓝色9亮蓝色2绿色10亮绿色3青色11亮青色4红色12亮红色5洋红色13亮洋红色6黄色14亮黄色7白色15亮白色 使用预定义常量预定义常量在VB 6.0内部定义,读者可以在视图菜单的“对象浏览器”中选择ColorConstants查看所有这些常量,在程序中不需要声明就可以直接使用。如: Form1.BackColor=vbRed 直接赋值如果知道具体的颜色值,也可以直接给颜色属性赋值,如:Form1.BackColor=&HFF& 设置窗体背景色为亮红色 Form1.BackColor=&HFF00& 设置窗体背景色为亮绿色 Form1.BackColor=&HFFFF00& 设置窗体背景色为黄色5.3.2 图形方法 画点方法Pset格式:容器.Pset step(x,y),color该方法在容器上(x,y)处以值为color的颜色画点(x、y是Single类型表达式);缺省容器则指当前窗体,缺省color则为容器前景色(ForeColor)。 容器的当前输出位置坐标为(容器名.CurrentX,容器名.CurrentY),加Step关键字则在坐标(容器名.CurrentX+x,容器名.CurrentY+y) 位置画点。 该方法所画点的大小,取决于容器的DrawWidth属性值。DrawWidth用来设置绘图线的宽度,值以像素为单位,取值范围是1到32767,缺省值为1即一个像素宽。设置该属性后,影响Pset、Line和Circle等方法的输出效果。 返回某点颜色值的函数Point格式:Point(x,y)该函数的返回值为点(x,y)的颜色值。如执行语句“C = Point(50,100)”,将窗体坐标(50,100)处点的颜色值存入变量C。例5-5 以下程序利用Pset方法绘制Cos(x)函数曲线。Private Sub Form_Click() Dim x As Integer, i As Integer For i = 0 To 10000 PSet (i,1200), vbRed 用画点的方法连线 Next i For x = 0 To 10000 PSet (x,1000 * Cos(x*3.1415926/1800) + 1200), vbBlue Next xEnd Sub程序运行的结果如图5-11所示。图5-11 Pset方法绘制Cos(x)函数曲线 画线、矩形方法Line 两点连线 格式1:容器名.Line (x1,y1)-(x2,y2),Color缺省容器名指窗体;缺省起点坐标则以当前输出位置为起点;缺省Color表达式则为容器的ForeColor属性;坐标点为Single类型表达式。例如,下列语句分别在窗体、控件Picture1上画线。 Line(100,150)-(400,300),RGB(120,120,200) 窗体坐标 Picture1.Line(10,10)-(60,100),RGB(0,0,255) 图片框坐标 格式2:容器名.Line (x1,y1)-Step(x2,y2),Color所绘制直线的两个端点位置为(x1,y1)和(x1+x2,y1+y2)。 多点折线连续使用缺省起点、画两点连线的语句,可以绘制多点折线:每句的终点位置为下一句的起点位置,首句或是采用格式1、或是以当前输出位置作为起点。例如:下列语句在窗体上所绘折线如图5-13所示。Line (50,100)-(100,100),RGB(120,120,200)Line -(150,150),RGB(120,120,200)Line -Step(-50,50),RGB(120,120,200)Line -(50,200),RGB(120,120,200)Line -(0,150),RGB(120,120,200)Line -(50,100),RGB(120,120,200) 图5-13 多点折线 矩形与填充矩形 格式一:容器名.Line (x1,y1)-Step(x2,y2),Color,B指定位置为矩形对角点,以容器的FillStyle填充格式、FillColor颜色在矩形内部填充;图形边框的颜色由Color表达式指定,缺省Color表达式则为容器的ForeColor属性。图形的填充特性只有对封闭图形才起作用。 格式二:容器名.Line (x1,y1)-Step(x2,y2),Color,BF用画矩形边框的颜色再填充矩形为实心,该语句的输出效果与容器的FillStyle、FillColor属性无关。例如:执行下列语句后,在窗体上的输出结果如图5-14所示。Form1.FillStyle = 2Form1.FillColor = vbBlueForm1.ForeColor = vbGreenLine (100, 100)-(1500, 1000), vbRed, B 红色外框,兰色水平填充线Line (1600, 100)-(2500, 1000), , B 绿色外框,兰色水平填充线Line (2800, 100)-(3800, 1000), vbRed, BF 红色实心矩形图5-14 矩形与填充矩形 圆、圆弧与椭圆方法Circle 画圆格式:容器名.Circle Step(x,y),radius,Color以(x,y) 为圆心(有Step关键字则以(CurrentX+x,CurrentY+y)为圆心)、以radius为半径画颜色值为Color的圆。缺省容器名、Color选项的有关规则同前,不再赘述。例5-8 画1个当前窗体中所能容纳的最大的兰色实心圆,如图5-15所示。Private Sub Form_Click() Dim r As Single 缺省容器名称都是指窗体的属性、方法。 r = ScaleWidth If ScaleWidth ScaleHeight Then r = ScaleHeight FillStyle = 0 封闭图形均将内部填充为实心。 FillColor = RGB(0,0,255) 填充色为蓝色。 Circle (ScaleWidth / 2, ScaleHeight / 2), r/2 ,RGB(0,0,255)End Sub图5-15 兰色实心圆请读者考虑,如果要在容器Picture1中按上述要求画圆,则应该如何改写程序? 画圆弧格式:容器名.Circle Step(x,y),radius,Color,start,endstart、end为single类型表达式,该方法以start弧度为起点按逆时针方向到end弧度为止画一段圆弧(平行与x轴的正向为0弧度)。若Start为负值,该方法还画出1条从圆心到圆弧相应端点的连线,参数end也同样。例5-9 下列程序在窗体上画出1个红、绿、蓝各占1/3的圆饼图(如图5-16所示)。 Private Sub Form_Click() Dim pi As Double, x As Double, y As Double pi = 3.1415926535 FillStyle = 0 : FillColor = RGB(255, 0, 0) x = ScaleWidth2 : y = ScaleHeight2 Circle (x, y),800, RGB(255,255,255), -2*pi, -pi*2/3 FillColor = RGB(0, 255, 0) Circle (x, y),800, RGB(255,255,255), -pi*2/3, -pi*4/3 FillColor = RGB(0, 0, 255) Circle (

温馨提示

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

评论

0/150

提交评论