
vb图形及多媒体程序设计.ppt
103页VB.NET程序设计实用教程,第10章 图形与多媒体程序设计,本章任务,可擦写图形轮廓 视频文件播放器 音频播放器,本章要点,,,,GDI+与绘图命名空间,,,多媒体的含义,视频文件播放器,本章要点,可擦写图形轮廓,10.1 GDI+与绘图命名空间,在程序中有时需要绘制函数典型或绘制各种几何图形,这就要用到图形程序设计,在VB .NET中使用GDI+可以方便地进行图形程序设计10.1.1 GDI+的概念,GDI+是GDI(Graphics Device Interface,图形设备接口)的改进产品,它与.NET Framework同时推出GDI+解决了原来GDI中的很多问题,使用户可以更容易地使用这些接口来绘制图形10.1.2 GDI+的绘图命名空间,用户绘图时需要使用GDI+函数,这些GDI+函数都保存在System.Drawing.dll动态链接库中该动态链接库中包含了System.Drawing、System.Drawing.Text、System.Drawing.Printing、System.Drawing.Imaging、System.Drawing.Drawing2D和System.Drawing.Design等命名空间。
在VB.NET的图形编程中,最常用的命名空间是System.Drawing10.1.3 利用GDI+绘制图形的方法步骤,在System.Drawing命名空间中,最核心的类是Graphics类该类提供很多方法,利用它用户可以绘制出直线、曲线、椭圆等各种几何图形在VB .NET中,图形一般是在窗体或图形框控件(PictureBox)上进行绘制在绘图之前,应在指定的窗体或图形框控件上创建一个Graphics类的实例,创建了Graphics的实例后,才可以调用Graphics类的绘图方法使用Graphics类需特别注意一点:Graphics类的构造器(Sub New)是私有的,不能直接实例化,即不能使用类似下面的语句来创建Graphics类的一个实例: Dim 对象名称 As New System.Drawing.Graphics() 要创建Graphics类的实例,一般需经过两步,一是定义一个Graphics类的对象,二是调用窗体或图片框控件的CreateGraphics方法,以下语句将在PictureBox1上创建一个名为pic的Graphics类的实例:,10.1.4 与绘图相关的对象,1. Graphics对象 Graphics对象就相当于一张画布,可以调用它的绘图方法在其上绘图。
在绘制图形之前一定要先创建Graphics对象创建Graphics对象的方法—般有三种,分别如下 (1)利用窗体或控件的Paint事件的参数PaintEventArgs创建Graphics对象 当响应窗体或控件的Paint事件时,传回的事件参数PaintEventArgs中包含着窗体或控件的Graphics对象,在其上可以进行绘图工作利用该方式创建Graphics对象的例子如下: Private Sub Form1_Paint(ByVal sender As Object,ByVal e As System.Windows.Forms. PaintEventArgs) Handles MyBase.Paint Dim G As System.Drawing.Graphics = e.Graphics End Sub,10.1.4 与绘图相关的对象,(2)使用窗体或控件的CreateGraphics方法 窗体和控件类都有一个CreateGraphics方法,通过该方法可以在程序中生成此窗体或控件所对应的Graphics对象这种方法一般应用于对象已经存在的情况下如下所示: Dim G As System.Drawing.Graphics G = Me.CreateGraphics() 注意:Graphics是命名空间System.Drawing中的一个类,使用时应加上命名空间的名称。
为了能够直接使用类名,可用Imports System.Drawing语句引入System.Drawing命名空间,引入后就可以直接使用类名Graphics,而不需再加命名空间前缀 (3)使用Image的派生类创建Graphics对象使用Image的任何派生类均可以生成相应的Graphics对象,这种方法一般适用于在VB .NET中对图像进行处理的场合如下: Dim B As New Bitmap(“c:\MYPIC.BMP“) '根据图像文件生成Bitmap对象 Dim G As Graphics '定义Graphics对象 G = Graphics.FromImage(B) '生成Graphics类的对象 Graphics类有许多绘图方法,关于Graphics类的绘图方法,请读者参阅附录210.1.4 与绘图相关的对象,2.Pen对象 Pen对象(又称画笔对象)主要用来绘制线条、多边形、曲线等几何图形,具有宽度、样式和颜色三种属性Pen对象的宽度用来确定所画的线条宽度,默认的Pen对象宽度是一个像素单位;Pen对象的颜色确定了所画的线条颜色;Pen对象的样式确定了所绘图形的线型,它通常有实线、虚线、点线、点划线、双点划线等。
除此以外,在VB .NET中,还可以通过属性设置来设定Pen对象绘制的线条的起点和终点的样式10.1.4 与绘图相关的对象,(1)Pen对象的创建 Pen类的构造器有四种,使用方法如下 ①创建某一颜色的Pen对象:Public Sub New(Color) ②创建某一刷子样式的Pen对象:Public Sub New(Brush) ③创建某—刷子样式并具有相应宽度的Pen对象:Public Sub New(Brush, Single) ④创建某一颜色和相应宽度的Pen对象:Public Sub New(Color, Single),10.1.4 与绘图相关的对象,Pen类的构造器中有一个Color结构的参数,Color结构在GDI+中是用ARGB来表示的,其中A代表Alpha值、R代表红色分量值、G代表绿色分量、B代表蓝色分量值 Color结构的A、R、G、B属性分别代表颜色的四种分量的值,Color结构还具有很多表示系统定义颜色的属性,如:Color.White代表白色、Color.Green代表绿色等 例如,下列的两条语句将分别创建名为Pen1和Pen2的两个Pen对象: Dim Pen1 As New Pen(Color.Yellow) : Dim Pen2 As New Pen(Color.Blank, 5),10.1.4 与绘图相关的对象,(2)Pen对象的常用属性 ①Alignment属性:用来获取或设置此Pen对象的对齐方式。
②Color属性:用来获取或设置此Pen对象的颜色 ③Width属性:用来获取或设置此Pen对象的宽度 ④DashStyle属性:用来获取或设置通过此Pen对象绘制的虚线的样式该属性是一个DashStyle枚举型的值,枚举成员名称及其说明如表10-1所示,10.1.4 与绘图相关的对象,DashStyle 枚举型的成员及其说明,10.1.4 与绘图相关的对象,⑤DashCap属性:用来指定虚线两端风格,是一个DashCap枚举型的值,取值有:Flat(每一划线段的两端均为方形的方帽)、Round(每一划线段的两端均为圆角的圆帽)、Triangle(每一划线段的两端均为带尖的三角帽) ⑥StartCap属性:用来获取或设置通过此Pen对象绘制的直线起点的帽样式 ⑦EndCap属性:用来获取或设置通过此Pen对象绘制的直线终点的帽样式 ⑧PenType属性:用来获取用此Pen对象绘制的直线的样式是一个DashStyle枚举型的值10.1.4 与绘图相关的对象,3.Font对象 可以使用Font对象(字体对象)来建立自定义字体,该对象在建立之后就不能被修改,因此若程序中需要不同的字体,只有建立多个不同的Font对象。
Font对象的构造器有很多重载版本,感兴趣的读者可参考相应的资料,此处不再赘述Font对象的常用属性如表10-2所示,10.1.4 与绘图相关的对象,Font对象的常用属性,10.1.4 与绘图相关的对象,例如,有下列程序(已经引入命名空间System.Drawing): Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim MyFont As Font = New Font(“宋体“,20, FontStyle.Bold Or FontStyle.Italic) '创建字体 Dim g As Graphics : g = Me.CreateGraphics() '创建Graphics对象 g.DrawString(“字体演示与图形绘制 MyFont, New SolidBrush(Color.SlateBlue), 10, 10) MyFont.Dispose() : g.Dispose() '释放绘图对象 End Sub 程序的执行结果如图10-1所示,10.1.4 与绘图相关的对象,4.Brush对象 Brush类(又称画刷)也不能被实例化,一般使用它的派生类。
派生类主要有:SolidBrush(单色画刷)、HatchBrush(阴影画刷)、LinearGradientBrush(颜色渐变画刷)、PathGradientBrush(使用路径及复杂的混合色渐变画刷)和TextureBrush(纹理画刷)大部分的Brush类型都定义在System.Drawing命名空间中HatchBrush、LinearGradientBrush和PathGradientBrush等画刷定义在System.Drawing.Drawing2D命名空间中,10.1.4 与绘图相关的对象,(1)SolidBrush画刷 SolidBrush类用来定义单一颜色的Brush,其构造器如下 Public Sub New( ByVal color As Color ) 例如: Dim MyBrush As New SolidBrush(Color.Blue) 该语句创建了一个名为MyBrush的蓝色画刷 (2)HatchBrush画刷 SolidBrush类用来定义阴影画刷,可以定义前景色和背景色及阴影风格前景色定义线条的颜色,背景色定义各线条之间间隙的颜色,10.1.4 与绘图相关的对象,HatchBrush类的构造器有两种,分别如下: [格式1]:Public Sub New( ByVal hatchstyle As HatchStyle, ByVal foreColor As Color ) [功能]:以HatchStyle指定的图案或阴影方式和foreColor指定的前景色创建画刷,默认的背景色为黑色。
[格式2]:Public Sub New( ByVal hatchstyle As HatchStyle, ByVal foreColor As Color, ByVal backColor As Color ) [功能]:创建画刷参数HatchStyle指定的图案或阴影方式,foreColor参数指定前景色,backColor 参数指定背景色,10.1.4 与绘图相关的对象,HatchBrush画刷具有三个属性,分别如下: ①BackgroundColor属性:获取此 HatchBrush 对象的背景色 ②ForegroundColor属性:获取此 HatchBrush 对象的前景色 ③HatchStyle属性:获取此 HatchBrush 对象的阴影样式 HatchBrush对象的阴影样式有很多,表10-。
