【教学课件】第11章图形程序设计.ppt
Visual Basic Visual Basic Visual Basic Visual Basic 程序设计程序设计程序设计程序设计第第1111章章 图形程序设计图形程序设计11.2 11.2 坐标系统坐标系统11.3 11.3 绘图属性绘图属性11.4 11.4 图形方法图形方法11.1 11.1 图形基础图形基础重点:重点:1.1.坐标系统的建立坐标系统的建立 2.2.绘图属性绘图属性 3.3.图形方法图形方法 Visual Basic Visual Basic Visual Basic Visual Basic 程序设计程序设计程序设计程序设计11.1.1 矢量图形矢量图形矢量图形以数学的矢量方式来记录图形内容。它的内容以线条与色块为主。矢量图形文件最常用的类型有两种:分别是标准型(.wmf)和增强型(.emf)。11.1.2 位图图形位图图形位图式图象是由许多点组成的,这些点称为像素,当许许多多不同颜色的点组合在一起便构成了一幅完整的图象。位图图形文件最常用的类型有位图文件(bitmap):位图通常以.bmp或.dib为文件扩展名。图标文件(icon):以.ico为文件扩展名。JPEG文件:JPEG是一种支持 8 位和 24 位颜色的压缩位图格式。它是 Internet 上一种流行的文件格式。以.jpg为文件扩展名。GIF文件:GIF是一种压缩位图格式。它可支持多达 256 种的颜色,是 Internet 上一种流行的文件格式。以.gif为文件扩展名。在VB应用程序的设计过程中,图形处理的内容基本包括:在应用程序中插入图片、使用VB图形控件创建图形和使用VB图形方法绘制图形。11.1 11.1 图形基础图形基础 Visual Basic Visual Basic Visual Basic Visual Basic 程序设计程序设计程序设计程序设计11.2.1 VB的缺省坐标系统的缺省坐标系统 在VB中,用户界面上凡是可以作为容器的控件对象,都带有一个由系统为其设定的(缺省)坐标系统,例如窗体上的(缺省)坐标系统,定义网格上的位置:(x,y),x 值是沿 x 轴点的位置,最左端是缺省位置 0。Y 值是沿 y 轴点的位置,最上端是缺省位置 0。也就是说:坐标系的原点是在窗体的作上角(其实,任何容器的缺省坐标系统,都是这样的类型)。该坐标系统的图示在图 11-1中。O(0,0)X轴Y轴坐标原点11.2 11.2 坐标系统坐标系统 Visual Basic Visual Basic Visual Basic Visual Basic 程序设计程序设计程序设计程序设计11.2.2 建立自己的坐标系统建立自己的坐标系统一改变坐标轴刻度改变坐标轴刻度 1.通过改变控件对象的通过改变控件对象的ScaleMode属性值属性值。对象的ScaleMode属性的取值及描述如下表所示:0用户定义。1缇。这是缺省刻度。1,440 缇等于一英寸 2磅。72 磅等于一英寸 3像素。像素是监视器或打印机分辨率的最小单位。每英寸里像素的数目由设备的分辨率决定 4字符。打印时,一个字符有 1/6 英寸高、1/12 英寸宽 5英寸 6毫米 7厘米2.使用ScaleTop、ScaleLeft、ScaleWidth以及ScaleHeight属性 Visual Basic Visual Basic Visual Basic Visual Basic 程序设计程序设计程序设计程序设计(x1,y1)(x2,y2)例如:Form1.Scale(-16,16)-(16,-16)可建立和前页一样的坐标系。二重新定义新的坐标系统二重新定义新的坐标系统 一个更有效的改变坐标系统的途径,是使用 Scale 方法。Scale 方法的语法格式如下:对象名对象名.Scale(x1.Scale(x1,y1)y1)(x2x2,y2y2)Visual Basic Visual Basic Visual Basic Visual Basic 程序设计程序设计程序设计程序设计1.CurrentX、CurrentY当前坐标属性当前坐标属性窗体或图形框的CurrentX、CurrentY属性给出在绘图时的当前坐标,CurrentX,CurrentY确定了下一次打印或绘图的水平及垂直坐标。11.3 11.3 绘图属性绘图属性 Visual Basic Visual Basic Visual Basic Visual Basic 程序设计程序设计程序设计程序设计2.FillStyle 2.FillStyle 属性属性 FillStyle FillStyle 属性属性的提供了若干预定义的填充样式图案,其中包括:实线、透明、水平线、垂直线、左上右下对角线、左下右上对角线、十字线和对角十字线。下表给出了FillStyle 属性的取值、意义描述以及具体的填充样例:FillStyle FillStyle 属性值属性值 描述描述 填充样式填充样式 Visual Basic Visual Basic Visual Basic Visual Basic 程序设计程序设计程序设计程序设计3.FillColor 3.FillColor 属性属性 FillColor 属性用于设置封闭图形内部的填充颜色。设计时,可以通过以下颜色函数指定色彩。1.RGB(红,绿,蓝)函数,红、绿、蓝三基色使用0255之间的整数。2.例如:RGB(0,0,0)为黑色 RGB(255,255,255)为白色3.随机颜色:r=int(rnd*256)4.g=int(rnd*256)5.b=int(rnd*256)6.RGB(r,g,b)2.QBColor(颜色码),颜色码使用015之间的整数。随机颜色:QBColor(Int(Rnd*16)Visual Basic Visual Basic Visual Basic Visual Basic 程序设计程序设计程序设计程序设计4.DrawStyle 属性属性窗体或图形框的DrawStyle 属性用于设置在其上面画线的样式,该属性提供7种直线样式如下表所示:DrawStyle 属性值属性值 描述描述 线段样式线段样式 5.DrawWidth 属性属性窗体或图形框的DrawWidth 属性用于设置在其上面画线的宽度或画点的大小,DrawWidth 属性所设置的线宽宽度以象素为单位,最小值为1。Visual Basic Visual Basic Visual Basic Visual Basic 程序设计程序设计程序设计程序设计11.4.1 Line方法方法 Line方法用于在窗体或图形框上绘制直线或矩形,其语法格式为:对象名对象名.Line Step(x1,y1)(x2,y2),颜色颜色,BF其中:对象即为窗体或图形框。(x1,y1),(x2,y2)为线段的起终点坐标或矩形的左上角右下坐标。颜色为可选参数,指定画线的颜色,缺省取对象的前景颜色,即ForeColor属性值。B表示画矩形,F表示用画矩形的颜色来填充矩形。关键字Step表示采用当前作图位置的相对位移量,即从当前坐标移动相应的步长后所得的点为画线起点。11.4 11.4 图形方法图形方法 Visual Basic Visual Basic Visual Basic Visual Basic 程序设计程序设计程序设计程序设计例11-5使用Line方法绘制矩形。在本例题中,首先在用户界面设计窗口设置窗体的高度(Height属性)为3400,宽度(Width属性)为2750,背景颜色(BackColor属性)为白色。编写如下的窗体单击事件程序代码:Private Sub Form_Click()Line(20,40)-(1500,2000),BLine(200,400)-Step(2000,2000),vbRed,BF End Sub本程序运行结果如图所示。Visual Basic Visual Basic Visual Basic Visual Basic 程序设计程序设计程序设计程序设计11.4.2 Circle方法方法 Circle方法用于在窗体或图形框上画圆、椭圆、圆弧和扇形。其语法格式为:对象名.Circle Step(x,y),半径,颜色,起始角,终止角,长短轴比率其中:(x,y)为圆心坐标,Step表示采用当前作图位置的相对值;参数起始角、终止角用于设置绘制圆弧;当在起始角、终止角取值前加一负号时,表示画圆心到圆弧的径向线,即绘制扇形;参数长短轴比率控制绘制椭圆时横轴与纵轴的比例关系,其默认值为1,即为画圆。Visual Basic Visual Basic Visual Basic Visual Basic 程序设计程序设计程序设计程序设计例11-6 使用Circle方法的程序。直接编写窗体单击事件程序代码如下:Private Sub Form_Click()Const PI=3.1415926Form1.Scale(0,0)-(60,40)Form1.Circle(10,10),8 绘制圆Form1.Circle(35,15),10,PI/2,PI 绘制圆弧Form1.FillStyle=0 设置填充样式为实填充Form1.FillColor=vbRed 设置填充颜色为红色Form1.Circle(50,15),10,-PI/6,-PI*5/6 绘制具有填充效果的扇形Form1.FillStyle=1 设置填充样式为虚填充Form1.Circle(15,30),12,0.3 绘制X-长轴椭圆Form1.Circle(45,30),8,3 绘制X-短轴椭圆End Sub 该程序运行结果如图所示:Visual Basic Visual Basic Visual Basic Visual Basic 程序设计程序设计程序设计程序设计11.4.3 Pset方法方法Pset方法用于在窗体或图形框上画点,其语法格式如下:对象名对象名.Pset Step(X,Y),颜色,颜色例11-8 使用Pset方法在窗体上的任意位置画任意颜色的、大小为110之间任意值的点。直接编写窗体单击事件如下:Private Sub Form_Click()Dim i As Integer,x As Double,y As DoubleRandomizeFor i=1 To 100 Form1.ForeColor=RGB(Int(Rnd*255),Int(Rnd*255),Int(Rnd*255)x=Rnd*Form1.ScaleWidth y=Rnd*Form1.ScaleHeight Form1.DrawWidth=Int(1+Rnd*30)PSet(x,y)Next i End Sub Visual Basic Visual Basic Visual Basic Visual Basic 程序设计程序设计程序设计程序设计例:重新定义窗体的坐标系为(-7,7)-(7,-7)。在窗体上绘制如图2所示图形,其中直线的颜色是随机的,直线的一端为坐标(0,0),另一端坐标用阿基米德方程计算:x=i*cos(i),y=i*sin(i)i=02,步长为0.1。Visual Basic Visual Basic Visual Basic Visual Basic 程序设计程序设计程序设计程序设计Private Sub Command3_Click()Scale(-7,7)-(7,-7)For i=0 To 2*3.14 Step 0.1 r=Int(Rnd*256)g=Int(Rnd*256)b=Int(Rnd*256)x=i*Cos(i)y=i*Sin(i)Line(0,0)-(x,y),RGB(r,g,b)Next IEnd Sub Visual Basic Visual Basic Visual Basic Visual Basic 程序设计程序设计程序设计程序设计11.4.4 Point方法方法Point方法用于返回指定点的RGB颜色,其语法格式如下:对象.Point(x,y)其中参数对象与(x,y)的意义与前述相同。如果(x,y)点位于对象之外,Point 方法将返回True。