您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 广告经营 > VB图形与多媒体程序设计
VB.NET清华大学出版社VB.NET程序设计实用教程第10章图形与多媒体程序设计GYC本章任务可擦写图形轮廓视频文件播放器音频播放器GYC本章要点GDI+与绘图命名空间多媒体的含义视频文件播放器本章要点可擦写图形轮廓GYC10.1GDI+与绘图命名空间在程序中有时需要绘制函数典型或绘制各种几何图形,这就要用到图形程序设计,在VB.NET中使用GDI+可以方便地进行图形程序设计。GYC10.1.1GDI+的概念GDI+是GDI(GraphicsDeviceInterface,图形设备接口)的改进产品,它与.NETFramework同时推出。GDI+解决了原来GDI中的很多问题,使用户可以更容易地使用这些接口来绘制图形。GYC10.1.2GDI+的绘图命名空间用户绘图时需要使用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.Drawing。GYC10.1.3利用GDI+绘制图形的方法步骤在System.Drawing命名空间中,最核心的类是Graphics类。该类提供很多方法,利用它用户可以绘制出直线、曲线、椭圆等各种几何图形。在VB.NET中,图形一般是在窗体或图形框控件(PictureBox)上进行绘制。在绘图之前,应在指定的窗体或图形框控件上创建一个Graphics类的实例,创建了Graphics的实例后,才可以调用Graphics类的绘图方法。使用Graphics类需特别注意一点:Graphics类的构造器(SubNew)是私有的,不能直接实例化,即不能使用类似下面的语句来创建Graphics类的一个实例:Dim对象名称AsNewSystem.Drawing.Graphics()要创建Graphics类的实例,一般需经过两步,一是定义一个Graphics类的对象,二是调用窗体或图片框控件的CreateGraphics方法,以下语句将在PictureBox1上创建一个名为pic的Graphics类的实例:GYC10.1.4与绘图相关的对象1.Graphics对象Graphics对象就相当于一张画布,可以调用它的绘图方法在其上绘图。在绘制图形之前一定要先创建Graphics对象。创建Graphics对象的方法—般有三种,分别如下。(1)利用窗体或控件的Paint事件的参数PaintEventArgs创建Graphics对象当响应窗体或控件的Paint事件时,传回的事件参数PaintEventArgs中包含着窗体或控件的Graphics对象,在其上可以进行绘图工作。利用该方式创建Graphics对象的例子如下:PrivateSubForm1_Paint(ByValsenderAsObject,ByValeAsSystem.Windows.Forms.PaintEventArgs)HandlesMyBase.PaintDimGAsSystem.Drawing.Graphics=e.GraphicsEndSubGYC10.1.4与绘图相关的对象(2)使用窗体或控件的CreateGraphics方法窗体和控件类都有一个CreateGraphics方法,通过该方法可以在程序中生成此窗体或控件所对应的Graphics对象。这种方法一般应用于对象已经存在的情况下。如下所示:DimGAsSystem.Drawing.GraphicsG=Me.CreateGraphics()注意:Graphics是命名空间System.Drawing中的一个类,使用时应加上命名空间的名称。为了能够直接使用类名,可用ImportsSystem.Drawing语句引入System.Drawing命名空间,引入后就可以直接使用类名Graphics,而不需再加命名空间前缀。(3)使用Image的派生类创建Graphics对象。使用Image的任何派生类均可以生成相应的Graphics对象,这种方法一般适用于在VB.NET中对图像进行处理的场合。如下:DimBAsNewBitmap(c:\MYPIC.BMP)'根据图像文件生成Bitmap对象DimGAsGraphics'定义Graphics对象G=Graphics.FromImage(B)'生成Graphics类的对象Graphics类有许多绘图方法,关于Graphics类的绘图方法,请读者参阅附录2。GYC10.1.4与绘图相关的对象2.Pen对象Pen对象(又称画笔对象)主要用来绘制线条、多边形、曲线等几何图形,具有宽度、样式和颜色三种属性。Pen对象的宽度用来确定所画的线条宽度,默认的Pen对象宽度是一个像素单位;Pen对象的颜色确定了所画的线条颜色;Pen对象的样式确定了所绘图形的线型,它通常有实线、虚线、点线、点划线、双点划线等。除此以外,在VB.NET中,还可以通过属性设置来设定Pen对象绘制的线条的起点和终点的样式。GYC10.1.4与绘图相关的对象(1)Pen对象的创建Pen类的构造器有四种,使用方法如下。①创建某一颜色的Pen对象:PublicSubNew(Color)②创建某一刷子样式的Pen对象:PublicSubNew(Brush)③创建某—刷子样式并具有相应宽度的Pen对象:PublicSubNew(Brush,Single)④创建某一颜色和相应宽度的Pen对象:PublicSubNew(Color,Single)GYC10.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对象:DimPen1AsNewPen(Color.Yellow):DimPen2AsNewPen(Color.Blank,5)GYC10.1.4与绘图相关的对象(2)Pen对象的常用属性①Alignment属性:用来获取或设置此Pen对象的对齐方式。②Color属性:用来获取或设置此Pen对象的颜色。③Width属性:用来获取或设置此Pen对象的宽度。④DashStyle属性:用来获取或设置通过此Pen对象绘制的虚线的样式。该属性是一个DashStyle枚举型的值,枚举成员名称及其说明如表10-1所示GYC10.1.4与绘图相关的对象DashStyle枚举型的成员及其说明成员名称说明Custom用户自定义划线段样式Dash由划线段组成的直线DashDot由重复的划线点图案构成的直线DashDotDot由重复的划线点点图案构成的直线Dot由点构成的直线Solid实线GYC10.1.4与绘图相关的对象⑤DashCap属性:用来指定虚线两端风格,是一个DashCap枚举型的值,取值有:Flat(每一划线段的两端均为方形的方帽)、Round(每一划线段的两端均为圆角的圆帽)、Triangle(每一划线段的两端均为带尖的三角帽)。⑥StartCap属性:用来获取或设置通过此Pen对象绘制的直线起点的帽样式。⑦EndCap属性:用来获取或设置通过此Pen对象绘制的直线终点的帽样式。⑧PenType属性:用来获取用此Pen对象绘制的直线的样式。是一个DashStyle枚举型的值。GYC10.1.4与绘图相关的对象3.Font对象可以使用Font对象(字体对象)来建立自定义字体,该对象在建立之后就不能被修改,因此若程序中需要不同的字体,只有建立多个不同的Font对象。Font对象的构造器有很多重载版本,感兴趣的读者可参考相应的资料,此处不再赘述。Font对象的常用属性如表10-2所示GYC10.1.4与绘图相关的对象属性说明Bold测试字体是否为粗体。如果是粗体则返回TrueFontFamily字体的FontFamily,群组结构,用于管理字体集合和定义这些字体的相似属性Height字体的高度Italic测试字体是否为斜体。如果是则返回TrueName字体名称字符串Size返回一个Single类型值,表示用设计单位度量的字体大小(设计单位是字体的某种度量单位)SizeInPoints返回一个Single类型值,表示当前字体按“点”计量的大小Strikeout测试字体是否有删除线。如果有,返回TrueUnderline测试字体是否有下划线。如果有,返回TrueStyleFontStyle枚举类型的值。取值有:Bold(下划线)、Italic(倾斜)、Regular(普通)、Strikeout(删除线)、Underline(下划线),并且可以用Or和Xor运算符来添加或去除样式Font对象的常用属性GYC10.1.4与绘图相关的对象例如,有下列程序(已经引入命名空间System.Drawing):PrivateSubButton1_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesButton1.ClickDimMyFontAsFont=NewFont(宋体,20,FontStyle.BoldOrFontStyle.Italic)'创建字体DimgAsGraphics:g=Me.CreateGraphics()'创建Graphics对象g.DrawString(字体演示与图形绘制。,MyFont,NewSolidBrush(Color.SlateBlue),10,10)MyFont.Dispose():g.Dispose()'释放绘图对象EndSub程序的执行结果如图10-1所示GYC10.1.4与绘图相关的对象4.Brush对象Brush类(又称画刷)也不能被实例化,一般使用它的派生类。派生类主要有:SolidBrush(单色画刷)、HatchBrush(阴影画刷)、LinearGradientBrush(颜色渐变画刷)、PathGradientBrush(使用路径及复杂的混合色渐变画刷)和TextureBrush(纹理画刷)。大部分的Brush类型都定义在System.Drawing命名空间中。HatchBrush、LinearGradientBrush和PathGradientBrush等画刷定义在System.Drawing.Drawing2D命名空间中GYC10.1.4与绘图相关的对象(1)SolidBrush画刷SolidBrush类用来定义单一颜色的Brush,其构造器如下。PublicSubNew(ByValcolorAsColor)例如:DimMyBrushAsNewSolidBrush(Color.Blue)该语句创建了一个名为MyBrush的蓝色画刷。(2)HatchBrush画刷SolidBrush类用来定义阴影画刷,可以定义前景色和背景色及阴影风格。前景色定义线条的颜色,背景色定义各线条之间间隙的颜色GYC10.1.4与绘图相关的对象HatchBrush类的构造器有两种,分别如下:[格式1]:PublicSubNew(ByValhatchstyleAsHatchStyle,ByValforeColorAsColor)[功能]:以HatchStyle指定的图案或阴影方式和foreColor指定的前景色创建画刷,默认的背景色为黑色。[
本文标题:VB图形与多媒体程序设计
链接地址:https://www.777doc.com/doc-3369810 .html