[精选]C5770 第14章 图形图像与多媒体编程5770.pptx
《[精选]C5770 第14章 图形图像与多媒体编程5770.pptx》由会员分享,可在线阅读,更多相关《[精选]C5770 第14章 图形图像与多媒体编程5770.pptx(89页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。
1、1第十四章第十四章图形图像与多媒体编程图形图像与多媒体编程14.1GDI+概述概述14.2绘制图形绘制图形14.3图像的显示与保存图像的显示与保存14.4动画设计动画设计14.5Web应用程序中的图形图像操作应用程序中的图形图像操作14.6音频与视频播放音频与视频播放214.1GDI+概述概述 GDI+:GraphicsDeviceInterfacePlus,它提供了各种,它提供了各种丰富的图形图像处理功能丰富的图形图像处理功能在在C#.NETC#.NET中,使用中,使用GDI+GDI+处理二维(处理二维(2D2D)的图形和图像,)的图形和图像,使用使用DirectXDirectX处理三维(处
2、理三维(3D3D)的图形图像。)的图形图像。GDI+主要有主要有“二维矢量图形二维矢量图形”、“图像处理图像处理”和和“版式版式”三部分组成。三部分组成。GDI+提供了存储基元自身相关信息的类和结构、存储基提供了存储基元自身相关信息的类和结构、存储基元绘制方式相关信息的类,以及实际进行绘制的类。元绘制方式相关信息的类,以及实际进行绘制的类。GDI+为使用各种字体、字号和样式来显示文本这种复为使用各种字体、字号和样式来显示文本这种复杂任务提供了大量的支持。杂任务提供了大量的支持。其他高级功能其他高级功能3在在C#C#中,所有图形图像处理功能都包含在以下名称空间下:中,所有图形图像处理功能都包含在
3、以下名称空间下:1.System.Drawing1.System.Drawing名称空间名称空间 提供了提供了对对GDI+GDI+基本基本图图形功能的形功能的访问访问,主要有,主要有GraphicsGraphics类类、BitmapBitmap类类、从、从BrushBrush类继类继承的承的类类、FontFont类类、IconIcon类类、ImageImage类类、PenPen类类、ColorColor类类等等。2.System.Drawing.Drawing2D2.System.Drawing.Drawing2D名称空间名称空间 提供了高级的二维和矢量图形功能。主要有梯度型画提供了高级的二维
4、和矢量图形功能。主要有梯度型画刷、刷、MatrixMatrix类(用于定义几何变换)和类(用于定义几何变换)和GraphicsPathGraphicsPath类等。类等。3.System.Drawing.Imaging名称空间名称空间 提供了高级提供了高级GDI+图像处理功能。图像处理功能。4.System.Drawing.Text4.System.Drawing.Text名称空间名称空间 提供了高级提供了高级GDI+字体和文本排版功能字体和文本排版功能414.1.1Graphics类类 GraphicsGraphics类类包包含含在在System.DrawingSystem.Drawing名
5、名称称空空间间下下。要要进进行行图图形形处处理理,必必须须首首先先创创建建GraphicsGraphics对对象象,然然后后才才能能利利用用它它进进行各种画图操作。行各种画图操作。创建创建GraphicsGraphics对象的形式有:对象的形式有:1.1.在窗体或控件的在窗体或控件的PaintPaint事件中直接引用事件中直接引用GraphicsGraphics对象对象 每每一一个个窗窗体体或或控控件件都都有有一一个个PaintPaint事事件件,该该事事件件的的参参数数中中包包含含了了当当前前窗窗体体或或控控件件的的GraphicsGraphics对对象象,在在为为窗窗体体或或控控件件创建绘
6、制代码时,一般使用此方法来获取对图形对象的引用。创建绘制代码时,一般使用此方法来获取对图形对象的引用。Private void Form_Paint(object sender,Private void Form_Paint(object sender,System.Windows.Forms.PaintEventArgs e)System.Windows.Forms.PaintEventArgs e)Graphics g=e.Graphics;Graphics g=e.Graphics;5 2.2.从当前窗体获取对从当前窗体获取对GraphicsGraphics对象的引用对象的引用 把把当当
7、前前窗窗体体的的画画刷刷、字字体体、颜颜色色作作为为缺缺省省值值获获取取对对GraphicsGraphics对对象象的的引引用用,注注意意这这种种对对象象只只有有在在处处理理当当前前WindowsWindows窗窗口口消消息息的的过过程程中中有有效效。如如果果想想在在已已存存在在的的窗窗体体或控件上绘图,可以使用此方法。例如:或控件上绘图,可以使用此方法。例如:Graphics g=this.CreatGraphics();Graphics g=this.CreatGraphics();3.3.从从继承自图像的任何对象创建继承自图像的任何对象创建GraphicsGraphics对象。对象。此方
8、法在需要更改已存在的图像时十分有用。此方法在需要更改已存在的图像时十分有用。例如:例如:Bitmap bitmap=new Bitmap(Bitmap bitmap=new Bitmap(C:testa1.bmpC:testa1.bmp););Graphics g=Graphics.FromImage(bitmap);Graphics g=Graphics.FromImage(bitmap);614.1.2颜色颜色 颜颜色色是是进进行行图图形形操操作作的的基基本本要要素素。任任何何一一种种颜颜色色都都可可以以由四个分量决定,每个分量占据一个字节:由四个分量决定,每个分量占据一个字节:R R:红
9、色,取值范围:红色,取值范围0 0255255,255255为饱和红色。为饱和红色。G G:绿色,取值范围:绿色,取值范围0 0255255,255255为饱和绿色。为饱和绿色。B B:蓝色,取值范围:蓝色,取值范围0 0255255,255255为饱和蓝色。为饱和蓝色。A A:AlphaAlpha值值,即即透透明明度度。取取值值范范围围0 0255255,0 0为为完完全全透透明明,255255为完全不透明。为完全不透明。在在System.System.DrawingDrawing名名称称空空间间下下,有有一一个个ColorColor结结构构类类型型,可可以使用下列方法创建颜色对象:以使用下
10、列方法创建颜色对象:使用使用FromArgbFromArgb指定任意颜色指定任意颜色 这这个个方方法法有有两两种种常常用用的的形形式式,第第一一种种形形式式是是直直接接指指定定三三种颜色,方法原型为:种颜色,方法原型为:7 public static Color FromArgb(int red,int green,int blue)public static Color FromArgb(int red,int green,int blue)三三个个参参数数分分别别表表示示R R、G G、B B三三色色,AlphaAlpha值值使使用用缺缺省省值值255255,即即完完全全不不透透明。例如:
11、明。例如:Color red=Color.FromArgb(255,0,0);Color red=Color.FromArgb(255,0,0);Color green=Color.FromArgb(0,255,0);Color green=Color.FromArgb(0,255,0);Color blue=Color.FromArgb(0,0,0 xff);Color blue=Color.FromArgb(0,0,0 xff);其中,其中,0 xff0 xff为十六进制表示形式。为十六进制表示形式。第二种形式使用四个参数,格式为:第二种形式使用四个参数,格式为:public public
12、 static static Color Color FromArgb(int FromArgb(int alpha,int alpha,int red,int red,int green,int green,int blue)blue)四个参数分别表示透明度和四个参数分别表示透明度和R R、G G、B B三色值。三色值。8 使用系统预定义颜色使用系统预定义颜色 在在ColorColor结结构构中中已已经经预预定定义义了了141141种种颜颜色色,可可以以直直接接使使用,例如:用,例如:Color myColor;Color myColor;myColor=Color.Red;myColor=
13、Color.Red;myColor=Color.Aquamarine;myColor=Color.Aquamarine;myColor=Color.LightGoldenrodYellow;myColor=Color.LightGoldenrodYellow;914.1.3笔和画笔笔和画笔 在在GDI+GDI+中中,可可使使用用笔笔对对象象和和画画笔笔对对象象呈呈现现图图形形、文文本本和和图图像像。笔笔是是PenPen类类的的实实例例,用用于于绘绘制制线线条条和和空空心心形形状状。画画笔笔是是从从BrushBrush类类派派生生的的任任何何类类的的实实例例,用用于于填填充充形形状状或或绘绘制制
14、文文本。本。1.笔(笔(Pen)笔笔可可用用于于绘绘制制绘绘制制具具有有指指定定宽宽度度和和样样式式的的线线条条、曲曲线线以以及勾勒形状轮廓。及勾勒形状轮廓。下面的示例说明如何创建一支基本的黑色笔:下面的示例说明如何创建一支基本的黑色笔:Pen myPen=new Pen(Color.Black);Pen myPen=new Pen(Color.Black);Pen myPen=new Pen(Color.Black,5);Pen myPen=new Pen(Color.Black,5);也可以从画笔对象创建笔,例如:也可以从画笔对象创建笔,例如:SolidBrush myBrush=new
15、SolidBrush(Color.Red);SolidBrush myBrush=new SolidBrush(Color.Red);Pen myPen=new Pen(myBrush);Pen myPen=new Pen(myBrush);Pen myPen=new Pen(myBrush,5);Pen myPen=new Pen(myBrush,5);10笔(笔(PenPen)的用法演示示例。)的用法演示示例。1)1)新新建建一一个个WindowsWindows应应用用程程序序,适适当当加加宽宽窗窗体体宽宽度度。然后切换到代码方式,添加名称空间引用:然后切换到代码方式,添加名称空间引用:u
16、sing System.Drawing.Drawing2D;using System.Drawing.Drawing2D;2)2)添加添加Form1_PaintForm1_Paint事件代码。事件代码。private void Form1_Paint(object sender,private void Form1_Paint(object sender,System.Windows.Forms.PaintEventArgs e)System.Windows.Forms.PaintEventArgs e)Graphics g=e.Graphics;Graphics g=e.Graphics;P
17、en pen=new Pen(Color.Blue,10.5f);Pen pen=new Pen(Color.Blue,10.5f);g.DrawStringg.DrawString(蓝色,宽度为蓝色,宽度为10.5,this.Font,10.5,this.Font,new SolidBrush(Color.Black),5,5);new SolidBrush(Color.Black),5,5);g.DrawLine(pen,new Point(110,10),new Point(380,10);g.DrawLine(pen,new Point(110,10),new Point(380,10
18、);pen.Width=2;pen.Width=2;pen.Color=Color.Red;pen.Color=Color.Red;g.DrawString(g.DrawString(红色,宽度为红色,宽度为2,this.Font,2,this.Font,new SolidBrush(Color.Black),5,25);new SolidBrush(Color.Black),5,25);11g.DrawLine(pen,new Point(110,30),new Point(380,30);g.DrawLine(pen,new Point(110,30),new Point(380,30);
19、pen.StartCap=LineCap.Flat;pen.StartCap=LineCap.Flat;pen.EndCap=LineCap.ArrowAnchor;pen.EndCap=LineCap.ArrowAnchor;pen.Width=9;pen.Width=9;g.DrawString(g.DrawString(红色箭头线红色箭头线,this.Font,this.Font,new new SolidBrush(Color.Black),5,45);SolidBrush(Color.Black),5,45);g.DrawLine(pen,new Point(110,50),new
20、Point(380,50);g.DrawLine(pen,new Point(110,50),new Point(380,50);pen.DashStyle=DashStyle.Custom;pen.DashStyle=DashStyle.Custom;pen.DashPattern=new float4,4;pen.DashPattern=new float4,4;pen.Width=2;pen.Width=2;pen.EndCap=LineCap.NoAnchor;pen.EndCap=LineCap.NoAnchor;g.DrawString(g.DrawString(自定义虚线自定义虚
21、线,this.Font,this.Font,new SolidBrush(Color.Black),5,65);new SolidBrush(Color.Black),5,65);g.DrawLine(pen,new Point(110,40),new Point(380,70);g.DrawLine(pen,new Point(110,40),new Point(380,70);pen.DashStyle=DashStyle.Dot;pen.DashStyle=DashStyle.Dot;g.DrawString(g.DrawString(点划线点划线,this.Font,this.Font
22、,new SolidBrush(Color.Black),5,85);new SolidBrush(Color.Black),5,85);g.DrawLine(pen,new Point(110,90),new Point(380,90);g.DrawLine(pen,new Point(110,90),new Point(380,90);12运行结果运行结果132 2、画刷(、画刷(BrushBrush)画画刷刷是是可可与与GraphicsGraphics对对象象一一起起使使用用来来创创建建实实心心形形状状和和呈呈现现文文本本的的对对象象。可可以以用用画画笔笔填填充充各各种种图图形形形形状状
23、,如如矩形、椭圆、扇形、多边形和封闭路径等。矩形、椭圆、扇形、多边形和封闭路径等。几种不同类型的画刷几种不同类型的画刷:SolidBrush SolidBrush 画刷最简单的形式,用纯色进行绘制。画刷最简单的形式,用纯色进行绘制。HatchBrush HatchBrush 类似于类似于 SolidBrush SolidBrush,但是可以利用该类从大量预设,但是可以利用该类从大量预设的图案中选择绘制时要使用的图案,而不是纯色。的图案中选择绘制时要使用的图案,而不是纯色。TextureBrush TextureBrush 使用纹理(如图像)进行绘制。使用纹理(如图像)进行绘制。LinearGr
24、adientBrush LinearGradientBrush 使用沿渐变混合的两种颜色进行绘制。使用沿渐变混合的两种颜色进行绘制。PathGradientBrush PathGradientBrush 基于编程者定义的唯一路径,使用复杂的混合色渐变基于编程者定义的唯一路径,使用复杂的混合色渐变进行绘制。进行绘制。14(1)(1)使用使用SolidBrushSolidBrush类定义单色画笔类定义单色画笔 SolidBrushSolidBrush类类用用于于定定义义单单色色画画笔笔。该该类类只只有有一一个个构构造函数,带有一个造函数,带有一个ColorColor类型的参数。类型的参数。下下面面
25、的的示示例例说说明明如如何何在在窗窗体体上上绘绘制制一一个个纯纯红红色色的的椭椭圆圆。该该椭椭圆圆将将符符合合为为其其提提供供的的矩矩形形的的大大小小(此此例例中中为为表表示整个窗体的示整个窗体的ClientRectangleClientRectangle)。)。【例】单色画刷演示示例。【例】单色画刷演示示例。private void Form1_Paint(object sender,private void Form1_Paint(object sender,System.Windows.Forms.PaintEventArgs e)System.Windows.Forms.PaintEv
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 精选 精选C5770 第14章 图形图像与多媒体编程5770 C5770 14 图形图像 多媒体 编程 5770
限制150内