您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 广告经营 > 第四章图形、图像与多媒体
C#程序设计与案例教程清华大学出版社版权所有1第四章图形、图像与多媒体图形图像及多媒体处理也是C#的重要应用。.NET框架通过封装GDI+实现了图形图像的处理功能。利用C#可以开发出强大的图形、图像与多媒体程序。C#程序设计与案例教程清华大学出版社2版权所有目录GDI+概述GDI+绘图基础基本的绘图方法图像的显示与处理声音与视频的播放C#程序设计与案例教程清华大学出版社3版权所有4.1GDI+概述早期的Window程序中,可以使用GDI(GraphicsDeviceInterface,图形设备接口)在一个窗体中绘制图形、文本和图像,但它的功能有限。GDI+是GDI的一个新版本,它不仅在GDI基础上添加许多新特性,而且对原有的GDI功能进行优化,并在为开发人员提供的二维矢量图形、文本、图像处理、区域、路径以及图形数据矩阵等方面构造了一系列相关的类。其中,图形类Graphics是GDI+接口中的一个核心类,许多绘图操作都可用它完成。C#程序设计与案例教程清华大学出版社4版权所有4.1.1GDI+命名空间GDI+包含大约60个类、50个枚举和8个结构。所有的函数都保存在System.Drwaing.dll程序集中。C#程序设计与案例教程清华大学出版社5版权所有4.1.2基本数据结构在绘图操作中,常常需要使用Point(点)、Size(大小)和Rectangle(矩形)等简单的数据结构。C#程序设计与案例教程清华大学出版社6版权所有1.Point、Size和Rectangle结构的构造函数(1)Point用来表示平面上的点或一个位置(x,y),其属性有X和Y。Point(intdw):dw的低16位指定水平坐标,高16位指定垂直坐标。Point(Sizesz):sz的宽度Width和高度Height用来指定Point的X和Y的值。Point(intx,inty);(2)Size结构常用来表示一个矩形的大小,其属性有Width和Height。Size(Pointpt):pt的X和Y属性用来指定Size的Width和Height。Size(intwidth,intheight);(3)Rectangle结构用来表示一个矩形的位置和大小,其属性有X、Y、Width、Height、Location、Left、Right、Top、Bottom。Rectangle(intx,inty,intwidth,intheight);Rectangle(Pointlocaton,Sizesize);C#程序设计与案例教程清华大学出版社7版权所有2.基本运算符操作Point、Size和Reactangle类结构重载了常用的运算符操作,如Point和Size结构的+、-、==、!=操作,Rectangle结构的==、!=操作等。这里只介绍Point和Size结构的+和-操作。(1)“+”操作若向Point对象加上一个Size对象,则返回Point对象。例如:Drawing.Pointpt=Drawing.Point(25,-18)+Drawing(10,5);则结果为Point(35,-13)。若向Size对象加上一个Size对象,则是它们的宽度和高度相加。(2)“-”操作若向Point对象减去一个Size对象,则返回Point对象。例如:Drawing.Pointpt=Drawing.Point(25,-19)+Drawing(15,5);C#程序设计与案例教程清华大学出版社8版权所有3.Rectangle结构的常用操作(1)扩大和缩小使用Inflate方法。voidInflate(Sizesize)voidInflate(intwidht,intheight);(2)相交和合并成员方法Iniersect和Union分别用来将两个矩形进行相交和合并。voidIntersect(Rectanglerect)staticRectangleIntersect(Rectanglea,Rectangleb);staticRectangleUnion(Rectanglea,Rectangleb);C#程序设计与案例教程清华大学出版社9版权所有(3)移动Offset方法用来调整矩形的位置。voidOffset(Pointpos);voidOffset(intx,inty);(4)测试和判断IntersectsWith方法用来判断是否和指定的矩形相交。若有相交,则返回true,否则返回false。boolIntersectWidth(Rectanglerect);C#程序设计与案例教程清华大学出版社10版权所有4.1.3处理图形图像的步骤处理图形包括两个步骤:创建Graphics对象;使用Graphics对象绘制线条和形状、呈现文本或显示与操作图像。C#程序设计与案例教程清华大学出版社11版权所有4.2GDI+绘图基础4.2.1坐标系统1.全局坐标、页面坐标和设备坐标2.Grahpics与坐标系统有关的成员3.全局变换全局坐标到页面坐标的坐标变换叫做全局变换,保存在Graphics类的Transform属性中。主要包含两种变换:平移、旋转、比例。C#程序设计与案例教程清华大学出版社12版权所有4.页面变换页面坐标的原点总是在虚拟绘图平面的左上角。由于页面坐标标度量单位是像素,所以设备坐标与页面坐标是相同的。但如果将页面坐标改成其他的单位(如英寸),两者就不同了。这时发生页面坐标到设备坐标的变换称为页面变换。Graphics类的PageUnit和PageScale两个属性提供页面变换操作。C#程序设计与案例教程清华大学出版社13版权所有【案例4-1】建立坐标系并画圆。设计一个坐标系,坐标原点在窗体的中心,单位为英才,X轴向右为正,Y轴向上为正,画出坐标轴,在此坐标系绘制一个圆,圆心在坐标圆点,半径为1英寸。C#程序设计与案例教程清华大学出版社14版权所有4.2.2画笔画笔是绘制各种直线和曲线的一种图形工具,它主要有线型、颜色和线宽属性。默认的线宽为1个像素,线型为实线。C#程序设计与案例教程清华大学出版社15版权所有1.建立Pen对象(1)直接使用Pen类构造函数。常用下面的三种重载形式:publicPen(Colorc):创建某一种颜色的Pen对象。publicPen(Colorc,floatw):创建某一种颜色和相应宽度的Pen对象。publicPen(Brushb):创建某一刷子样式的Pen对象。publicPen(Brushb,floatw):创建某一刷子样式并具有相应宽度的Pen对象。C#程序设计与案例教程清华大学出版社16版权所有(2)从SystemPens和Pens类获取Pen对象的引用。System.Drawing.SystemPens类用于创建与用户界面单位和系统颜色相匹配的笔。该类的每一个共享属性都返回一个Pen对象的引用。例如:Penpe=SystemPens.HighlightText;//画笔使用选定项的文本颜色。C#程序设计与案例教程清华大学出版社17版权所有2.Pen的常用属性Brush属性。获取或设置用于确定此Pen对象的属性的Brush对象。Color属性。获取或设置此Pen对象的颜色。Width属性。获取或设置此Pen对象的宽度。DashStyle属性。获取或设置用于通过此Pen对象绘制的虚线的样式。DashCap属性。获取或设置用在短划线终点的帽样式,Drawing2D.DashCap枚举值。C#程序设计与案例教程清华大学出版社18版权所有EndCap属性。获取或设置用在通过此Pen对象绘制的直线终点的帽样式。取Drawing2D.LineCap枚举值,如表4-4所示。StartCap属性。获取或设置用在通过此Pen对象绘制的直线起点的帽样式。取Drawing2D.LineCap枚举值,如表4-4所示。LineJoin属性。获取或设置通过此Pen对象绘制的两条连续直线终点之间的联接样式。指定如何在图形(子路径)中联接连续的直线或曲线段,该图形(子路径)包含在GraphicsPath对象中。Drawing2D.LineJoin枚举值。C#程序设计与案例教程清华大学出版社19版权所有2.画刷Brush类决定如何填充图形形状(如矩形、椭圆形、扇形、多边形和封闭路径)内部。这是一个抽象基类,不能进行实例化。若要创建一个画刷对象,可使用从Brush派生出的类。这些派生类主要有:SolidBrush(单色画刷)、TextureBrush(纹理画刷)、HatchBrush(阴影画刷)、LinearGradientBrush(线性渐变画刷)、PathGradientBrush(路径渐变画刷)。前两个定义在System.Drawing命名空间中,后三个定义在System.Drawing.Drawing2D命名空间中。C#程序设计与案例教程清华大学出版社20版权所有4.3基本的绘图方法4.3.1绘制线条或形状1.画直线使用Graphics的DrawLine方法可以绘制直线。publicvoidDrawLine(Penpen,intx1,inty1,intx2,inty2):绘制一条连接由坐标对指定的两个点的线条。publicvoidDrawLine(Penpen,floatx1,floaty1,floatx2,floaty2):绘制一条连接由坐标对指定的两个点的线条。publicvoidDrawLine(Penpen,Pointp1,Pointp2):绘制一条连接两个Point结构的线。C#程序设计与案例教程清华大学出版社21版权所有2.画椭圆使用Graphics的DrawEllipse方法可以绘制椭圆。publicvoidDrawEllipse(Penpen,Rectanglerect):绘制边界Rectangle结构指定的椭圆。publicvoidDrawEllipse(Penpen,intx,inty,intw,inth):绘制一个由边框(该边框由一对坐标、高度和宽度指定)定义的椭圆。publicvoidDrawEllipse(Pen,float,float,float,float):绘制一个由边框(该边框由一对坐标、高度和宽度指定)定义的椭圆。C#程序设计与案例教程清华大学出版社22版权所有3.绘制圆弧使用Graphics的DrawArc方法可以绘制圆弧。publicvoidDrawArc(Penpen,Rectanglerect,floatstartAngle,floatsweepAngle):绘制一段弧线,它表示Rectangle结构指定的椭圆的一部分。publicvoidDrawArc(Penpen,intx,inty,intw,inth,intstartAngle,intsweepAngle):绘制一段弧线,它表示由一对坐标、宽度和高度指定的椭圆部分。publicvoidDrawArc(Penpen,floatx,floaty,floatw,floath,floatstartAngle,floatsweepAngle):绘制一段弧线,它表示由一对坐标、宽度和高度指定的椭圆部分。C#程序设计与案例教程清华大学出版社23版权所有4.画扇形图使用Graphics的DrawPie方法可以绘制扇形图,所谓扇形图其实质就是一段圆弧的两个端点与圆心相连。DrawPie方法的格式与DrawArc方法基本一致。C#程序设计与案例教程清华大学出版社24版权所有5.画矩形使用Graphics的DrawRectangle方法可以绘制矩形。publicvoidDrawRectangle(Penpen,Rectangler):绘制由Rectangle结构指定的矩形。publicvoidDrawRectangle(Penpen,intx,inty,intw,inth):绘制由坐标对、宽度和高度指定的矩形。publicvoidDrawRectangle(Penpen,floatx,floaty,f
本文标题:第四章图形、图像与多媒体
链接地址:https://www.777doc.com/doc-1772021 .html