1、图形一般指在计算机中用各种几何形状组成的画面图像是指由扫描仪、数码照相机等设备捕捉的实际场景画面VB为用户提供了简洁有效的图形图像处理能力除了窗体和控件的图形图像特征以外,VB还提供了一系列基本的图形图像、语句和方法,支持直接在窗体上产生图形、图像和颜色,控制对象的位置和外观,图形与图像,为方便用户制作图形,VB在工具箱中提供了4种图形控件,它们是PictureBox控件、Image控件、Shape控件和Line控件此外,VB还提供了一些创建图形的方法,图形方法和图形控件,Shape控件,Line控件,图像框, 图像框(Image)控件的作用与图片框 PictureBox 控件相似,但它只能用
2、于显示图形,不能作为其他控件的容器 常用属性图像框与图片框一样,使用 Picture 属性来装载图形。程序运行时,可利用 LoadPicture 函数来进行设置图像框没有 AutoSize 属性,但有 Stretch 属性。当 Stretch 属性为 True 时,加载的图形可以自动调整尺寸以适应图像框的大小。当Stretch 属性设置为 False(缺省值)时,图像框可自动改变大小以适应其中的图形, 用途Line控件可用来在窗体、框架和图片框中绘制简单的线段 常用属性BorderStyle 属性:提供了7种线段样式,即透明、实线、虚线、点线、点划线、双点划线和内实线。BorderColor
3、属性:用来指定线段的颜色,设计时可在属性窗口中选择该属性,然后从提供的调色板中选择颜色BorderWidth 属性:设置控件的线宽X1,X2,Y1,Y2 属性:指定线段起点和终点的X坐标和Y坐标。可以通过改变X1,X2,Y1,Y2的值来改变线段的起止位置,Line直线控件,例9-1,用图片框和图像框可以装入和显示图形图像,但有时用户希望根据自己的意愿画出一些简单的图形。VB提供了画图形的基本工具,如Shape(形状控件)、Line(线控件)。Shape 控件和 Line 控件只用于表面装饰,不支持任何事件 用途Shape 控件可用来绘制矩形、正方形、椭圆形、圆角矩形及圆角正方形 常用属性Sha
4、pe属性:,Shape形状控件,例9-2,绘制图形,Line控件Line控件仅用于画线。 图形控件与动画示例1:曲柄滑块机构的演示。利用Timer控件来控制图形控件的转动。 设计步骤如下: 建立应用程序用户界面。如下图左所示(包括的控件:一个Frame1(4个形状控件分别表示大圆、滑块、圆周上的动点和圆心、一个计时器控件、和若干直线控件分别表示连杆、半径等)、一个命令按钮Command1。,绘制图形,设置对象属性,如下表,编写事件代码 在通用段声明符号常数及窗体级变量 Const pi = 3.14259 Dim x0 As Single, y0 As Single, t As Single
5、窗体的Load事件代码 Private Sub Form_Load() With Shape1.Tag = .Width / 2 圆的半径x0 = .Left + .Tag 圆心的x坐标y0 = .Top + .Tag 圆心的y坐标 End With With Line1 连杆的长.Tag = Sqr(.X1 - .X2) 2 + (.Y1 - .Y2) 2) End With End Sub,绘制图形,绘制图形, 计时器控件的Timer事件代码 Private Sub Timer1_Timer() t = t + 1 Shape3.Left = x0 + Shape1.Tag * Sin(p
6、i * t / 30) - 30 Shape3.Top = y0 - Shape1.Tag * Cos(pi * t / 30) + 30 Line1.X1 = Shape3.Left + 30 Line1.Y1 = Shape3.Top + 30 Line1.X2 = Shape3.Left + _Sqr(Line1.Tag 2 - (Shape3.Top - y0) 2) Line2.X1 = Line1.X1 Line2.Y1 = Line1.Y1 Shape2.Left = Line1.X2 End Sub,绘制图形, “开始”命令按钮Command1的Click事件代码 Privat
7、e Sub Command1_Click() If Command1.Caption = “暂停(&S)“ ThenCommand1.Caption = “继续(&C)“Timer1.Enabled = False ElseCommand1.Caption = “暂停(&S)“Timer1.Enabled = True End If End Sub,绘制图形,图形的坐标系统坐标系统是一个二维网格,可定义屏幕上、窗体中或其他容器中的位置。任何容器的缺省坐标系统,都是由容器的左上角(0,0)坐标开始。 坐标单位坐标单位即坐标的刻度,缺省的坐标系统采用twip为单位。设置对象的ScaleMode属性
8、可以改变坐标系统的单位。见下页表,绘制图形,ScaleMode属性设置值,绘制图形,坐标方法使用Scale方法也可以设置用户的坐标系统,其语法格式为:. Scale(x1,y1)-(x2,y2)注: (x1,y1)设置 的左上角坐标 (x2,y2)设置 的右下角坐标 使用Scale方法将自动把ScaleMode属性设置为0 坐标属性,例9-4、例9-5,绘制图形,DrawWidth属性和DrawStyle属性DrawWidth属性的语法:.DrawWidth=DrawStyle属性的语法为:.DrawStyle=DrawWidth和DrawStyle属性分别用于设置绘图线的宽度和样式。 Fil
9、lColor属性和FillStyle属性FillColor属性的语法为:.FillColor=FillStyle属性的语法为:.FillStyle=FillColor和FillStyle属性分别用于设置已绘制好的封闭图形的填充颜色填充样式。,绘制图形,清除图形方法(Cls )Cls方法可以清除Form或PictureBox中由图形和打印语句在运行时所生成的图形和文本,清除后的区域以背景色填充语法为:. Cls注:若当前AutoRedraw属性设置为False,则Cls方法不能清除在AutoRedraw属性设置为True时产生的图形和文本,例9-6,绘制图形,常用绘图方法 画点方法(PSet)
10、PSet方法可以在对象的指定位置( x,y ),按确定的像素颜色画点。语法为:. PSet Step (x,y),注: Step为可选的关键字,指定相对于由CurrentX和CurrentY属性提供的当前图形位置的坐标 (x,y)用于设置点的水平和垂直坐标 为可选的常整型数,为该点指定颜色。若省略,则使用当前的ForeColor属性值,绘制图形,例9-7 :使用Pset方法绘制圆的渐开线。如图所示其中:圆的渐开线的参数方程为:x=a(cost+tsint)y=a(sint-tcost)“圆的渐开线”的Click事件代码 Private Sub Command1_Click() ScaleMod
11、e = 6 设置坐标单位为mm x = Me.ScaleWidth / 2 中心点的横坐标 y = Me.ScaleHeight / 2 中心点的纵坐标 For t = 0 To 30 Step 0.01xt = Cos(t) + t * Sin(t)yt = -(Sin(t) - t * Cos(t) 纵坐标向上为正PSet (xt + x, yt + y), vbBlue 相对于中心点画出曲线 Next t End Sub,绘制图形,画直线、矩形方法(Line)Line方法可以在对象上的两点之间画直线或矩形。语法为:. Line Step x1,y1-Step(x2,y2),B F注: (
12、x1,y1)可选,是直线或矩形的起点坐标。若省略,则使用CurrentX和CurrentY指示的位置 (x2,y2)必需,是直线或矩形的终点坐标 为可选的常整型数,为该点指定颜色。若省略,则使用当前的ForeColor属性值B可选。选择B表示以(x1,y1)为左上角坐标,以(x2,y2)为右下角坐标画出矩形。F表示以矩形边框颜色填充矩形。,绘制图形,例9-8:使用Line方法的不同参数画出图形。如图所示窗体的Paint事件代码 Private Sub Form_Paint() Cls Scale (0, 0)-(13, 11) Line (1, 1)-(4, 4), RGB(255, 0, 0
13、) Line (5, 1)-(8, 4), RGB(0, 255, 0), B Line (9, 1)-(12, 4), RGB(255, 255, 0), BF For i = 1 To 3Line (i, 4 + i)-(7 - i, 11 - i), RGB(0, 0, 255), B Next i Line (8, 6)-Step(10, 6), RGB(255, 0, 255) End Sub,绘制图形,画圆方法(Circle)Circle方法可以在对象的指定位置画圆、椭圆或弧。语法为:. Circle Step (x,y),color,start,end,aspect注: (x,y
14、)用于指定圆、椭圆或弧的中心坐标start和end指定弧或扇形的起点以及终点位置(以弧度为单位),其范围从-2到2。起点的缺省值是 0,终点的缺省值是2。正数画弧,负数画扇形 aspect为垂直半径与水平半径之比,不能为负数。aspect1时,椭圆沿垂直方向拉长,当aspect1时,椭圆沿水平方向拉长。aspect的缺省值为1.0,在屏幕上产生一个标准圆。可以省略语法中的某个参数,但不能省略分隔参数的逗号,绘制图形,例9-10:使用Circle方法在窗体中央画圆、椭圆和扇形。如图所示窗体的Click事件代码 Private Sub Form_Click() Const pi = 3.14159
15、26 Circle (2000, 1250), 1000, vbRed, -pi, -pi / 2 Circle Step(-500, -500), 500 Circle Step(0, 0), 500, , , , 5 / 25 End Sub,绘制图形,例9-11:使用Circle方法在窗体中央画出圆弧和扇形。如图所示窗体的Click事件代码 Private Sub Form_Paint() Const pi = 3.1415926 Circle (2150, 1200), 1000, vbGreen, _-pi / 6, -pi / 3, 3 / 5 Circle (2000, 1300
16、), 1000, vbRed, _-pi / 3, -pi / 6, 3 / 5 End Sub,绘制图形,绘图语句与Paint事件示例7:使用Paint事件。如图所示窗体的Resize事件代码 Private Sub Form_Resize() Refresh End Sub 窗体的Paint事件代码 Private Sub Form_Paint() Dim halfx, halfy halfx = ScaleLeft + ScaleWidth / 2 halfy = ScaleTop + ScaleHeight / 2 Line (ScaleLeft, halfy)-(halfx, Sca
17、leTop) Line -(ScaleWidth + ScaleLeft, halfy) Line -(halfx, ScaleHeight + ScaleTop) Line -(ScaleLeft, halfy) End Sub,显示图片,直接加载图片到窗体可利用LoadPicture函数来设置Picture属性,语法为:LoadPicture()其中: 是一个字符串表达式,包括驱动器、文件夹和文件的名称。若省略, LoadPicture将清除图像 使用图像控件图像控件(Image)用来显示图片 Picture属性 Stretch属性Stretch属性值为False(缺省值)时,Image控
18、件可根据图片调整大小; Stretch属性值为True时,将根据Image控件的大小来调整图片大小,显示图片,示例8:利用图像控件设计“红绿灯”程序。如图所示属性设置: Image1的Picture属性值为Trffc10a.ico、Stretch属性值为True、Tag属性值为2 Image2的Picture属性值为Trffc10c.ico、Stretch属性值为True、Tag属性值为3 Image3(0) Image3(2)的Picture属性值分别为Trffc10a.ico、Trffc10b.ico 、 Trffc10c.ico, Visible属性值为False,显示图片, Image
19、1的Click事件代码 Private Sub Image1_Click()u = Image1.TagSelect Case uCase 1Image1.Picture = Image3(0).Picture 绿灯Image1.Tag = 2Image2.Picture = Image3(2).Picture : Image2.Tag = 1Case 2Image1.Picture = Image3(1).Picture 黄灯Image1.Tag = 3Image2.Picture = Image3(1).Picture : Image2.Tag = 3Case 3Image1.Pictur
20、e = Image3(2).Picture 红灯Image1.Tag = 1Image2.Picture = Image3(0).Picture : Image2.Tag = 2End Select End Sub,显示图片, Image2的Click事件代码 Private Sub Image2_Click()u = Image2.TagSelect Case uCase 1Image2.Picture = Image3(0).Picture : Image2.Tag = 2Image1.Picture = Image3(2).Picture : Image1.Tag = 1Case 2Im
21、age2.Picture = Image3(1).Picture : Image2.Tag = 3Image1.Picture = Image3(1).Picture : Image1.Tag = 3Case 3Image2.Picture = Image3(2).Picture : Image2.Tag = 1Image1.Picture = Image3(0).Picture : Image1.Tag = 2End Select End Sub,绘制图形,与图形有关的属性 DrawMode属性DrawMode属性决定由图形方法或Shape控件及Line控件所绘制线条的真实颜色。DrawMo
22、de属性的语法为:.DrawMode= 最简单的DrawMode功能,绘制图形,与前景色ForeColor有关的DrawMode功能,DrawMode的合并操作功能,绘制图形,DrawMode的Mask类操作功能,与Xor(异或)有关的DrawMode功能,绘制图形,示例6:使用AutoRedraw属性控制Cls方法从窗体中删除显示信息。如图所示“清除”的Click事件代码 Private Sub Command2_Click() msg = “按“确定”按钮,将清除窗体上的部分内容“ MsgBox msg Cls End Sub,绘制图形,“重画”的Click事件代码 Private Sub
23、 Command1_Click() Dim msg, msg1, msg2:FontSize = 12: FontBold = True msg = “由print输出的文本“ msg1 = “这是在AutoRedraw=True后“ msg2 = “这是在AutoRedraw=False后“ AutoRedraw = True CurrentX = ScaleWidth / 2 - TextWidth(msg) / 2 CurrentY = TextHeight(msg):Print msg x = ScaleWidth / 2 - TextWidth(msg1) / 2 y = TextH
24、eight(msg1) Line (x - 50, 4 * y - 50)-Step(TextWidth(msg1) + _100, y + 100), , B,CurrentX = x: CurrentY = 4 * y Print msg1 AutoRedraw = False x = ScaleWidth / 2 - TextWidth(msg2) / 2 y = TextHeight(msg2) Line (x - 50, 7 * y - 50)-Step(TextWidth(msg2) + _100, y + 100), , B CurrentX = ScaleWidth / 2 - TextWidth(msg2) / 2: CurrentY = 7 * y Print msg2 End Sub,