C程序设计 第四章 图形、图像与多媒体.ppt
《C程序设计 第四章 图形、图像与多媒体.ppt》由会员分享,可在线阅读,更多相关《C程序设计 第四章 图形、图像与多媒体.ppt(54页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、C#程序设计与案例教程 清华大学出版社 第四章第四章 图形、图像与多媒体图形、图像与多媒体图形图像及多媒体处理也是C#的重要应用。.NET框架通过封装GDI+实现了图形图像的处理功能。利用C#可以开发出强大的图形、图像与多媒体程序。1 1版权所有版权所有C#程序设计与案例教程 清华大学出版社 目录n nGDI+GDI+概述概述n nGDI+GDI+绘图基础绘图基础n n基本的绘图方法基本的绘图方法 n n图像的显示与处理图像的显示与处理n n声音与视频的播放声音与视频的播放2 2版权所有版权所有C#程序设计与案例教程 清华大学出版社 4.1 GDI+概述概述n n早期的早期的WindowWin
2、dow程序中,可以使用程序中,可以使用GDIGDI(Graphics Device Interface Graphics Device Interface,图形设备,图形设备接口)在一个窗体中绘制图形、文本和图像,接口)在一个窗体中绘制图形、文本和图像,但它的功能有限。但它的功能有限。GDI+GDI+是是GDIGDI的一个新版本,的一个新版本,它不仅在它不仅在GDIGDI基础上添加许多新特性,而且对基础上添加许多新特性,而且对原有的原有的GDIGDI功能进行优化,并在为开发人员提功能进行优化,并在为开发人员提供的二维矢量图形、文本、图像处理、区域、供的二维矢量图形、文本、图像处理、区域、路径以
3、及图形数据矩阵等方面构造了一系列相路径以及图形数据矩阵等方面构造了一系列相关的类。其中,图形类关的类。其中,图形类GraphicsGraphics是是GDI+GDI+接口中接口中的一个核心类,许多绘图操作都可用它完成。的一个核心类,许多绘图操作都可用它完成。3 3版权所有版权所有C#程序设计与案例教程 清华大学出版社 4.1.1 GDI+命名空间n n GDI+GDI+包含大约包含大约6060个类、个类、5050个枚举和个枚举和8 8个结构。个结构。所有的函数都保存在所有的函数都保存在System.Drwaing.dllSystem.Drwaing.dll程序程序集中。集中。4 4版权所有版权
4、所有C#程序设计与案例教程 清华大学出版社 4.1.2 基本数据结构n n在绘图操作中,常常需要使用在绘图操作中,常常需要使用PointPoint(点)、(点)、SizeSize(大小)和(大小)和RectangleRectangle(矩形)等简单的数(矩形)等简单的数据结构。据结构。5 5版权所有版权所有C#程序设计与案例教程 清华大学出版社 1 1PointPoint、SizeSize和和和和RectangleRectangle结构的构造函数结构的构造函数结构的构造函数结构的构造函数(1 1)PointPoint用来表示平面上的点或一个位置(用来表示平面上的点或一个位置(x,yx,y),其
5、属性有),其属性有X X和和Y Y。Point(intPoint(int dwdw):dwdw的低的低1616位指定水平坐标,高位指定水平坐标,高1616位指定垂直坐标。位指定垂直坐标。Point(SizePoint(Size szsz):szsz的宽度的宽度WidthWidth和高度和高度HeightHeight用来指定用来指定PointPoint的的X X和和Y Y的值。的值。Point(intPoint(int x,intx,int y);y);(2 2)SizeSize结构常用来表示一个矩形的大小,其属性有结构常用来表示一个矩形的大小,其属性有WidthWidth和和HeightHei
6、ght。Size(PointSize(Point pt)pt):ptpt的的X X和和Y Y属性用来指定属性用来指定SizeSize的的WidthWidth和和HeightHeight。Size(intSize(int width,intwidth,int height)height);(3 3)RectangleRectangle结构用来表示一个矩形的位置和大小,其属性有结构用来表示一个矩形的位置和大小,其属性有X X、Y Y、WidthWidth、HeightHeight、LocationLocation、LeftLeft、RightRight、TopTop、BottomBottom。Re
7、ctangle(intRectangle(int x,intx,int y,inty,int width,intwidth,int height);height);Rectangle(PointRectangle(Point locaton,Sizelocaton,Size size);size);6 6版权所有版权所有C#程序设计与案例教程 清华大学出版社 2.2.基本运算符操作基本运算符操作基本运算符操作基本运算符操作 Point Point、SizeSize和和ReactangleReactangle类结构重载了常用的运算符操作类结构重载了常用的运算符操作,如,如PointPoint和和
8、SizeSize结构的结构的+、-、=、!=!=操作,操作,RectangleRectangle结结构的构的=、!=!=操作等。这里只介绍操作等。这里只介绍PointPoint和和SizeSize结构的结构的+和和-操作。操作。(1 1)“+”+”操作操作 若向若向PointPoint对象加上一个对象加上一个SizeSize对象,则返回对象,则返回PointPoint对象。例对象。例如:如:Drawing.PointDrawing.Point pt=Drawing.Point(25,-18)+Drawing(10,5);pt=Drawing.Point(25,-18)+Drawing(10,5
9、);则结果为则结果为Point(35,-13)Point(35,-13)。若向。若向SizeSize对象加上一个对象加上一个SizeSize对象,则是它们对象,则是它们的宽度和高度相加。的宽度和高度相加。(2 2)“-”-”操作操作若向若向PointPoint对象减去一个对象减去一个SizeSize对象,则返回对象,则返回PointPoint对象。例如:对象。例如:Drawing.PointDrawing.Point pt=Drawing.Point(25,-19)+Drawing(15,5);pt=Drawing.Point(25,-19)+Drawing(15,5);7 7版权所有版权所有
10、C#程序设计与案例教程 清华大学出版社 3 3RectangleRectangle结构的常用操作结构的常用操作结构的常用操作结构的常用操作(1 1)扩大和缩小)扩大和缩小 使用使用InflateInflate方法。方法。n nvoid void Inflate(SizeInflate(Size size)size)n nvoid void Inflate(intInflate(int widht,intwidht,int height);height);(2 2)相交和合并)相交和合并 成员方法成员方法IniersectIniersect和和UnionUnion分别用来将两个矩形进分别用来将两
11、个矩形进行相交和合并。行相交和合并。n nvoid void Intersect(RectangleIntersect(Rectangle rectrect)n nstatic Rectangle static Rectangle Intersect(RectangleIntersect(Rectangle a,Rectanglea,Rectangle b);b);n nstatic Rectangle static Rectangle Union(RectangleUnion(Rectangle a,Rectanglea,Rectangle b);b);8 8版权所有版权所有C#程序设计与案
12、例教程 清华大学出版社 (3)移动 OffsetOffset方法用来调整矩形的位置。方法用来调整矩形的位置。n nvoid void Offset(PointOffset(Point pos);pos);n nvoid void Offset(intOffset(int x,intx,int y);y);(4)测试和判断n nIntersectsWithIntersectsWith方法用来判断是否和指定的矩形方法用来判断是否和指定的矩形相交。若有相交,则返回相交。若有相交,则返回truetrue,否则返回,否则返回falsefalse。boolbool IntersectWidth(Recta
13、ngleIntersectWidth(Rectangle rectrect););9 9版权所有版权所有C#程序设计与案例教程 清华大学出版社 4.1.3 处理图形图像的步骤n n处理图形包括两个步骤:创建处理图形包括两个步骤:创建Graphics Graphics 对象;对象;使用使用Graphics Graphics 对象绘制线条和形状、呈现文本对象绘制线条和形状、呈现文本或显示与操作图像。或显示与操作图像。1010版权所有版权所有C#程序设计与案例教程 清华大学出版社 4.2 GDI+绘图基础 4.2.1 坐标系统 1 1全局坐标、页面坐标和设备坐标全局坐标、页面坐标和设备坐标全局坐标、
14、页面坐标和设备坐标全局坐标、页面坐标和设备坐标 2 2GrahpicsGrahpics与坐标系统有关的成员与坐标系统有关的成员与坐标系统有关的成员与坐标系统有关的成员 3 3全局变换全局变换全局变换全局变换 全局坐标到页面坐标的坐标变换叫做全局变换,全局坐标到页面坐标的坐标变换叫做全局变换,保存在保存在GraphicsGraphics类的类的TransformTransform属性中。主要包属性中。主要包含两种变换:平移、旋转、比例。含两种变换:平移、旋转、比例。1111版权所有版权所有C#程序设计与案例教程 清华大学出版社 4页面变换页面变换n n页面坐标的原点总是在虚拟绘图平面的左上角。页
15、面坐标的原点总是在虚拟绘图平面的左上角。由于页面坐标标度量单位是像素,所以设备坐由于页面坐标标度量单位是像素,所以设备坐标与页面坐标是相同的。但如果将页面坐标改标与页面坐标是相同的。但如果将页面坐标改成其他的单位(如英寸),两者就不同了。这成其他的单位(如英寸),两者就不同了。这时发生页面坐标到设备坐标的变换称为页面变时发生页面坐标到设备坐标的变换称为页面变换。换。GraphicsGraphics类的类的PageUnitPageUnit和和PageScalePageScale两个两个属性提供页面变换操作。属性提供页面变换操作。1212版权所有版权所有C#程序设计与案例教程 清华大学出版社 【案
16、例案例案例案例4-14-1】建立坐标系建立坐标系并画圆。并画圆。n n设计一个坐标系,坐标设计一个坐标系,坐标原点在窗体的中心,单原点在窗体的中心,单位为英才,位为英才,X X轴向右为轴向右为正,正,Y Y轴向上为正,画轴向上为正,画出坐标轴,在此坐标系出坐标轴,在此坐标系绘制一个圆,圆心在坐绘制一个圆,圆心在坐标圆点,半径为标圆点,半径为1 1英寸。英寸。1313版权所有版权所有C#程序设计与案例教程 清华大学出版社 4.2.2 画笔n n画笔是绘制各种直线和曲线的一种图形工具,画笔是绘制各种直线和曲线的一种图形工具,它主要有线型、颜色和线宽属性。默认的线宽它主要有线型、颜色和线宽属性。默认
17、的线宽为为1 1个像素,线型为实线。个像素,线型为实线。1414版权所有版权所有C#程序设计与案例教程 清华大学出版社 1 1建立建立建立建立PenPen对象对象对象对象(1 1)直接使用)直接使用PenPen类构造函数。常用下面的三种重载形类构造函数。常用下面的三种重载形式:式:public public Pen(ColorPen(Color c)c):创建某一种颜色的:创建某一种颜色的PenPen对象。对象。public public Pen(ColorPen(Color c,floatc,float w)w):创建某一种颜色和相应宽度:创建某一种颜色和相应宽度的的PenPen对象。对象。
18、public public Pen(BrushPen(Brush b)b):创建某一刷子样式的:创建某一刷子样式的PenPen对象。对象。public public Pen(BrushPen(Brush b,floatb,float w)w):创建某一刷子样式并具有:创建某一刷子样式并具有相应宽度的相应宽度的PenPen对象。对象。1515版权所有版权所有C#程序设计与案例教程 清华大学出版社 (2 2)从)从SystemPensSystemPens和和PensPens类获取类获取PenPen对象的引对象的引用。用。System.Drawing.SystemPensSystem.Drawing
19、.SystemPens类用于创建类用于创建与用户界面单位和系统颜色相匹配的笔。该类与用户界面单位和系统颜色相匹配的笔。该类的每一个共享属性都返回一个的每一个共享属性都返回一个PenPen对象的引用。对象的引用。例如:例如:Pen Pen pepe=SystemPens.HighlightTextSystemPens.HighlightText;/;/画笔使用选画笔使用选定项的文本颜色。定项的文本颜色。1616版权所有版权所有C#程序设计与案例教程 清华大学出版社 2Pen的常用属性的常用属性n nBrushBrush属性。获取或设置用于确定此属性。获取或设置用于确定此PenPen对象的对象的属
20、性的属性的BrushBrush对象。对象。n nColorColor属性。获取或设置此属性。获取或设置此PenPen对象的颜色。对象的颜色。n nWidthWidth属性。获取或设置此属性。获取或设置此PenPen对象的宽度。对象的宽度。n nDashStyleDashStyle属性。获取或设置用于通过此属性。获取或设置用于通过此Pen Pen 对象绘制的虚线的样式。对象绘制的虚线的样式。n nDashCapDashCap属性。获取或设置用在短划线终点的属性。获取或设置用在短划线终点的帽样式,帽样式,Drawing2D.DashCapDrawing2D.DashCap枚举值枚举值 。1717版
21、权所有版权所有C#程序设计与案例教程 清华大学出版社 n nEndCapEndCap属性。获取或设置用在通过此属性。获取或设置用在通过此 Pen Pen 对对象绘制的直线终点的帽样式。取象绘制的直线终点的帽样式。取Drawing2D.LineCapDrawing2D.LineCap枚举值,如表枚举值,如表4-44-4所示。所示。n nStartCapStartCap属性。获取或设置用在通过此属性。获取或设置用在通过此 Pen Pen 对对象绘制的直线起点的帽样式。取象绘制的直线起点的帽样式。取Drawing2D.LineCapDrawing2D.LineCap枚举值,如表枚举值,如表4-44-
22、4所示。所示。n nLineJoinLineJoin属性。获取或设置通过此属性。获取或设置通过此 Pen Pen 对象绘对象绘制的两条连续直线终点之间的联接样式。指定制的两条连续直线终点之间的联接样式。指定如何在图形(子路径)中联接连续的直线或曲如何在图形(子路径)中联接连续的直线或曲线段,该图形(子路径)包含在线段,该图形(子路径)包含在 GraphicsPathGraphicsPath 对象中。对象中。Drawing2D.LineJoinDrawing2D.LineJoin枚举值。枚举值。1818版权所有版权所有C#程序设计与案例教程 清华大学出版社 2 2画刷画刷画刷画刷n nBrush
23、Brush类决定如何填充图形形状(如矩形、椭圆形、扇类决定如何填充图形形状(如矩形、椭圆形、扇形、多边形和封闭路径)内部。形、多边形和封闭路径)内部。n n这是一个抽象基类,不能进行实例化。若要创建一个这是一个抽象基类,不能进行实例化。若要创建一个画刷对象,可使用从画刷对象,可使用从BrushBrush派生出的类。这些派生类主派生出的类。这些派生类主要有:要有:SolidBrushSolidBrush(单色画刷)、(单色画刷)、TextureBrushTextureBrush(纹理(纹理画刷)、画刷)、HatchBrushHatchBrush(阴影画刷)、(阴影画刷)、LinearGradie
24、ntBrushLinearGradientBrush(线性渐变画刷)、(线性渐变画刷)、PathGradientBrushPathGradientBrush(路径渐变画刷)。前两个定义在(路径渐变画刷)。前两个定义在System.DrawingSystem.Drawing命名空间中,后三个定义在命名空间中,后三个定义在System.Drawing.Drawing2DSystem.Drawing.Drawing2D命名空间中。命名空间中。1919版权所有版权所有C#程序设计与案例教程 清华大学出版社 4.3基本的绘图方法4.3.1 4.3.1 绘制线条或形状绘制线条或形状 1 1画直线画直线画直
25、线画直线使用使用GraphicsGraphics的的DrawLineDrawLine方法可以绘制直线。方法可以绘制直线。public void public void DrawLine(PenDrawLine(Pen pen,intpen,int x1,int y1,int x2,int y2)x1,int y1,int x2,int y2):绘制一条连接由坐标对指定的两个点的线条。:绘制一条连接由坐标对指定的两个点的线条。public void public void DrawLine(PenDrawLine(Pen pen,float x1,float y1,float pen,float
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C程序设计 第四章 图形、图像与多媒体 程序设计 第四 图形 图像 多媒体
限制150内