图形与多媒体程序设计.pptx
《图形与多媒体程序设计.pptx》由会员分享,可在线阅读,更多相关《图形与多媒体程序设计.pptx(103页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、本章任务本章任务可擦写图形轮廓可擦写图形轮廓视频文件播放器视频文件播放器音频播放器音频播放器第1页/共103页本章要点本章要点 GDI+与绘图命名空间 多媒体的含义多媒体的含义 视频文件播放器视频文件播放器 本本章章要要点点 可擦写图形轮廓 第2页/共103页10.1 GDI+与绘图命名空间 在程序中有时需要绘制函数典型或绘制各种几何图形,这就要用到图形程序设计,在VB.NET中使用GDI+可以方便地进行图形程序设计。第3页/共103页10.1.1 GDI+的概念 GDI+是是GDI(GraphicsDeviceInterface,图形设备接口)的,图形设备接口)的改进产品,它与改进产品,它与
2、.NETFramework同时推出。同时推出。GDI+解决了原来解决了原来GDI中的中的很多问题,使用户可以更容易地使用这些接口来绘制图形。很多问题,使用户可以更容易地使用这些接口来绘制图形。第4页/共103页10.1.2 GDI+的绘图命名空间 用户绘图时需要使用用户绘图时需要使用GDI+函数,这些函数,这些GDI+函数都保存在函数都保存在System.Drawing.dll动态链接库中。该动态链接库中包含了动态链接库中。该动态链接库中包含了System.Drawing、System.Drawing.Text、System.Drawing.Printing、System.Drawing.Im
3、aging、System.Drawing.Drawing2D和和System.Drawing.Design等命名等命名空间。在空间。在VB.NET的图形编程中,最常用的命名空间是的图形编程中,最常用的命名空间是System.Drawing。第5页/共103页10.1.3 利用GDI+绘制图形的方法步骤 在System.Drawing命名空间中,最核心的类是Graphics类。该类提供很多方法,利用它用户可以绘制出直线、曲线、椭圆等各种几何图形。在VB.NET中,图形一般是在窗体或图形框控件(PictureBox)上进行绘制。在绘图之前,应在指定的窗体或图形框控件上创建一个Graphics类的实
4、例,创建了Graphics的实例后,才可以调用Graphics类的绘图方法。使用Graphics类需特别注意一点:Graphics类的构造器(Sub New)是私有的,不能直接实例化,即不能使用类似下面的语句来创建Graphics类的一个实例:Dim 对象名称 As New System.Drawing.Graphics()要创建Graphics类的实例,一般需经过两步,一是定义一个Graphics类的对象,二是调用窗体或图片框控件的CreateGraphics方法,以下语句将在PictureBox1上创建一个名为pic的Graphics类的实例:第6页/共103页10.1.4 与绘图相关的对
5、象1 Graphics对象Graphics对象就相当于一张画布,可以调用它的绘图方法在其上绘图。在绘制图形之前一定要先创建Graphics对象。创建Graphics对象的方法般有三种,分别如下。(1)利用窗体或控件的Paint事件的参数PaintEventArgs创建Graphics对象当响应窗体或控件的Paint事件时,传回的事件参数PaintEventArgs中包含着窗体或控件的Graphics对象,在其上可以进行绘图工作。利用该方式创建Graphics对象的例子如下:Private Sub Form1_Paint(ByVal sender As Object,ByVal e As Sys
6、tem.Windows.Forms.PaintEventArgs)Handles MyBase.Paint Dim G As System.Drawing.Graphics=e.Graphics End Sub第7页/共103页10.1.4 与绘图相关的对象(2)使用窗体或控件的CreateGraphics方法窗体和控件类都有一个CreateGraphics方法,通过该方法可以在程序中生成此窗体或控件所对应的Graphics对象。这种方法一般应用于对象已经存在的情况下。如下所示:Dim G As System.Drawing.Graphics G=Me.CreateGraphics()注意:G
7、raphics是命名空间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 定义Grap
8、hics对象 G=Graphics.FromImage(B)生成Graphics类的对象Graphics类有许多绘图方法,关于Graphics类的绘图方法,请读者参阅附录2。第8页/共103页10.1.4 与绘图相关的对象2Pen对象Pen对象(又称画笔对象)主要用来绘制线条、多边形、曲线等几何图形,具有宽度、样式和颜色三种属性。Pen对象的宽度用来确定所画的线条宽度,默认的Pen对象宽度是一个像素单位;Pen对象的颜色确定了所画的线条颜色;Pen对象的样式确定了所绘图形的线型,它通常有实线、虚线、点线、点划线、双点划线等。除此以外,在VB.NET中,还可以通过属性设置来设定Pen对象绘制的线
9、条的起点和终点的样式。第9页/共103页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页/共103页10.1.4 与绘图相关的对象Pen类的构造器中有一个Color结构的参数,Color结构在GDI+中是用ARGB来表示
10、的,其中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)第11页/共103页10.1.4 与绘图相关的对象(2)Pen对象的常用属性Alignment属性:用来获取或设置此Pen对象的对齐方
11、式。Color属性:用来获取或设置此Pen对象的颜色。Width属性:用来获取或设置此Pen对象的宽度。DashStyle属性:用来获取或设置通过此Pen对象绘制的虚线的样式。该属性是一个DashStyle枚举型的值,枚举成员名称及其说明如表10-1所示 第12页/共103页10.1.4 与绘图相关的对象DashStyle 枚举型的成员及其说明成员名称 说明 Custom用户自定义划线段样式Dash由划线段组成的直线DashDot由重复的划线点图案构成的直线DashDotDot由重复的划线点点图案构成的直线Dot由点构成的直线Solid实线第13页/共103页10.1.4 与绘图相关的对象Da
12、shCap属性:用来指定虚线两端风格,是一个DashCap枚举型的值,取值有:Flat(每一划线段的两端均为方形的方帽)、Round(每一划线段的两端均为圆角的圆帽)、Triangle(每一划线段的两端均为带尖的三角帽)。StartCap属性:用来获取或设置通过此Pen对象绘制的直线起点的帽样式。EndCap属性:用来获取或设置通过此Pen对象绘制的直线终点的帽样式。PenType属性:用来获取用此Pen对象绘制的直线的样式。是一个DashStyle枚举型的值。第14页/共103页10.1.4 与绘图相关的对象3Font对象可以使用Font对象(字体对象)来建立自定义字体,该对象在建立之后就不
13、能被修改,因此若程序中需要不同的字体,只有建立多个不同的Font对象。Font对象的构造器有很多重载版本,感兴趣的读者可参考相应的资料,此处不再赘述。Font对象的常用属性如表10-2所示 第15页/共103页10.1.4 与绘图相关的对象属性说明Bold测试字体是否为粗体。如果是粗体则返回TrueFontFamily字体的FontFamily,群组结构,用于管理字体集合和定义这些字体的相似属性Height字体的高度Italic测试字体是否为斜体。如果是则返回TrueName字体名称字符串Size返回一个Single类型值,表示用设计单位度量的字体大小(设计单位是字体的某种度量单位)SizeI
14、nPoints 返回一个Single类型值,表示当前字体按“点”计量的大小Strikeout测试字体是否有删除线。如果有,返回TrueUnderline测试字体是否有下划线。如果有,返回TrueStyleFontStyle枚举类型的值。取值有:Bold(下划线)、Italic(倾斜)、Regular(普通)、Strikeout(删除线)、Underline(下划线),并且可以用Or和Xor运算符来添加或去除样式 Font对象的常用属性第16页/共103页10.1.4 与绘图相关的对象例如,有下列程序(已经引入命名空间System.Drawing):Private Sub Button1_Cli
15、ck(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.Di
16、spose()释放绘图对象 End Sub程序的执行结果如图10-1所示 第17页/共103页10.1.4 与绘图相关的对象4Brush对象Brush类(又称画刷)也不能被实例化,一般使用它的派生类。派生类主要有:SolidBrush(单色画刷)、HatchBrush(阴影画刷)、LinearGradientBrush(颜色渐变画刷)、PathGradientBrush(使用路径及复杂的混合色渐变画刷)和TextureBrush(纹理画刷)。大部分的Brush类型都定义在System.Drawing命名空间中。HatchBrush、LinearGradientBrush和PathGradien
17、tBrush等画刷定义在System.Drawing.Drawing2D命名空间中 第18页/共103页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类用来定义阴影画刷,可以定义前景色和背景色及阴影风格。前景色定义线条的颜色,背景色定义各线条之间间隙的颜色 第19
18、页/共103页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指定的图
19、案或阴影方式,foreColor参数指定前景色,backColor 参数指定背景色 第20页/共103页10.1.4 与绘图相关的对象HatchBrush画刷具有三个属性,分别如下:BackgroundColor属性:获取此 HatchBrush 对象的背景色。ForegroundColor属性:获取此 HatchBrush 对象的前景色。HatchStyle属性:获取此 HatchBrush 对象的阴影样式。HatchBrush对象的阴影样式有很多,表10-3仅列出一些常用的阴影样式 第21页/共103页10.1.4 与绘图相关的对象HatchStyle属性取值说明HatchStyle属性取
20、值说明BackwardDiagOnal背景对角DashedUpwardDiagonal虚线对角向上Cross十字DashedVertical虚线垂直DarkDownwardDiagonal对角向下DiagonalBrick对角砖状DarkHorizontal水平DiagonalCross对角十字DarkUpwardDiagonal对角向上Divot草皮DarkVertical垂直DottedDiamond点状DashedDownwardDiagonal虚线对角向下DottedGrid点格状DashedHorizontal虚线水平ForwardDiagonal向前对角Vertical垂直线Hor
21、izontal水平线HatchBrush对象的阴影样式 第22页/共103页10.1.4 与绘图相关的对象(3)LinearGradientBrush画刷LinearGradientBrush是渐变画刷的一种,用来产生线型渐变效果。常用的渐变效果是由两个颜色逐渐变化而来的。LinearGradientBrush类的构造器有多种格式,最常用的格式如下。格式:Public Sub New(ByVal point1 As Point,ByVal point2 As Point,ByVal color1 As Color,ByVal color2 As Color)功能:创建线性渐变画刷。该构造器有四
22、个参数,其中Point1是表示渐变的起始点,Point2是表示渐变的终结点,Color1表示的渐变的起始色,Color2表示的是渐变的终止色。此处的Point1和Point2是Point结构型的变量,Point结构表示一个点,有两个成员x和y,分别表示点的横坐标和纵坐标 第23页/共103页10.1.4 与绘图相关的对象例如,有如下程序(已引入命名空间System.Drawing):Private Sub Button1_Click(ByVal sender As System.Object,ByVal e As System.EventArgs)Handles Button1.Click D
23、im MyPic As Graphics=Me.CreateGraphics()生成图形对象 Dim MyBrush As New LinearGradientBrush(New Point(0,0),_ New Point(10,10),Color.Blue,Color.Red)生成渐变画刷 MyPic.FillRectangle(MyBrush,5,5,150,80)填充矩形 MyBrush.Dispose():MyPic.Dispose()释放对象 End Sub程序的执行结果如图10-2所示 第24页/共103页10.2 任务1:可擦写图形轮廓图形编程与鼠标事件任务10-1描述:创建一
24、个让用户画椭圆的程序,当用户按下并拖动鼠标时,将出现一个椭圆轮廓,该椭圆轮廓表示所画椭圆的大小,如图10-3所示。当用户松开鼠标键时,将在窗体上绘制出用蓝色填充的椭圆,如图10-4所示。图10-3 绘制的椭圆轮廓图10-4 最后绘制的椭圆第25页/共103页10.2 任务:可擦写图形轮廓图形编程与鼠标事件任务分析:为显示绘图轮廓,可使用两个Point结构的变量StartPt和EndPt,分别用来存放鼠标按下时的坐标和当前坐标。可通过下述方法来实现“可擦写”的轮廓并画图:当用户按下鼠标按钮时,在StartPt变量中记录鼠标的x,y坐标,同时用鼠标的x,y坐标初始化EndPt变量,然后设置画笔的颜
25、色,以画出所需图形的轮廓。每当鼠标移动时,可两次画图:一次是把画笔的颜色设置为背景色,然后在老地方绘图以便擦去已画过的“可擦写”图形轮廓,一次是把画笔再设置成需要的颜色,再在新位置上画出当前所需的图形轮廓,然后在变量EndPt中记录鼠标新位置的x,y坐标。最后当用户释放鼠标按钮时,擦除上次的“可擦写”图形轮廓,并以最终的色彩画出图形。第26页/共103页10.2 任务:可擦写图形轮廓图形编程与鼠标事件任务实现:1启动VB.NET,新建一个项目,项目类型为“Windows应用程序”,项目的存放位置为“D:VBTASKCH10”,项目名为“Task10_1”。2把Form1窗体的Text属性值设置
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 图形 多媒体 程序设计
限制150内