图形图像处理.pptx

上传人:莉*** 文档编号:76533949 上传时间:2023-03-11 格式:PPTX 页数:53 大小:765.20KB
返回 下载 相关 举报
图形图像处理.pptx_第1页
第1页 / 共53页
图形图像处理.pptx_第2页
第2页 / 共53页
点击查看更多>>
资源描述

《图形图像处理.pptx》由会员分享,可在线阅读,更多相关《图形图像处理.pptx(53页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、8.1.1 GDI+概述(续)在C#中,所有图形图像处理功能都包含在以下名称空间下:1.System.Drawing名称空间提供了对GDI+基本图形功能的访问,主要有Graphics类Bitmap类、从Brush类继承的类、Font类、Icon类、Image类、Pen类、Color类等。2.System.Drawing.Drawing2D名称空间提供了高级的二维和矢量图形处理功能。主要有:梯度型画刷、Matrix类(用于定义几何变换)和GraphicsPath类等。3.System.Drawing.Imaging名称空间提供了高级图像处理功能。4.System.Drawing.Text名称空间

2、提供了高级字体和文本排版功能第1页/共53页8.1.1 GDI+使用的坐标系1.GDI+坐标系中的基本结构Point表示某个特定位置相对于原点的水平和垂直距离。例如:Pointp=newPoint(1,1);Size也有两个整型属性来表示水平和垂直距离Width和Height。例如:Sizes=newSize(5,5);Rectangle用来指定矩形的坐标,它由一个Point和一个Size组成,其中Point表示矩形左上角,Size表示矩形大小。第2页/共53页8.1.1 GDI+使用的坐标系(续)例如:1)在构造函数中分别指定x坐标、y坐标、宽度和高度。Rectangler1=newRect

3、angle(1,2,5,6);2)在构造函数中指定Point位置和Size结构。Pointp=newPoint(1,2);Sizes=newSize(5,6);Rectangler2=newRectangle(p,s);第3页/共53页8.1.1 GDI+使用的坐标系(续)2.GDI+中坐标系的分类世界坐标系(Worldcoordinates)是一种通用的坐标系,适用于任何计算机设备。设备坐标系(Devicecoordinates)是指显示设备或打印设备使用的坐标系,它的特点是以设备上的像素点为单位。页面坐标系(Pagecoordinates)是指某种映射模式下的一种坐标系。默认情况下,世界坐

4、标系、设备坐标系和页面坐标系是一致的。第4页/共53页8.1.1 GDI+使用的坐标系(续)3.不同坐标系的转换调用GDI+里的Graphics对象进行操作时,输入的坐标为世界坐标系中的坐标,而在屏幕或者打印机上显示的是设备坐标系中的坐标。因此,每次输出时,系统都会自动进行两次坐标变换第一次是从世界坐标向页面坐标的世界变换(worldtransformation),第二次是从页面坐标向设备坐标的页面变换(pagetransformation)。在程序中,可以通过调用Graphics对象的TranslateTransform方法改变世界变换的原点,通过设置Graphics对象的PageUnit属

5、性改变页面变换的度量单位。第5页/共53页8.1.1 GDI+使用的坐标系(续)【例9-1】不同坐标系之间的转换示例privatevoidForm1_Paint(objectsender,PaintEventArgse)GraphicsmyGraphics=e.Graphics;myGraphics.TranslateTransform(0.5F,0.5F);myGraphics.PageUnit=GraphicsUnit.Inch;PenmyPen=newPen(Color.Black,1/myGraphics.DpiX);myGraphics.DrawLine(myPen,0,0,2,2)

6、;上面的代码分别调用了上面的代码分别调用了GraphicsGraphics对象的对象的世界变换和页面变换,使用英寸作为度量单世界变换和页面变换,使用英寸作为度量单位,并让坐标系的原点距工作区左边缘位,并让坐标系的原点距工作区左边缘0.50.5英寸、距工作区顶部英寸、距工作区顶部0.50.5英寸,然后从英寸,然后从(0,0)(0,0)到到(2,2)(2,2)绘制一条直线。右图为运行效图。绘制一条直线。右图为运行效图。XY1212第6页/共53页8.1.2 Graphics类 绘制图形图像前,首先必须创建Graphics对象,然后利用这个对象绘制直线、曲线、椭圆等图形图像。有三种常见的创建Grap

7、hics对象的方法。1.在窗体或控件的Paint事件中获取Graphics对象。例如:privatevoidForm1_Paint()Graphicsg=e.Graphics;第7页/共53页8.1.2 Graphics类(续)2.通过当前窗体的CreateGraphics方法,把当前窗体的画笔、字体、颜色作为默认值,获取对Graphics对象的引用。例如:Graphicsg=this.CreateGraphics();3.从继承自图像的任何对象创建Graphics对象,例如:BitmapmyBitmap=newBitmap(C:mytest1PicsmyPic.bmp);Graphicsg=

8、Graphics.FromImage(myBitmap);第8页/共53页8.1.3 颜色 颜色封装在System.Drawing.Color结构中。人眼可以分辨的任何颜色都是由一定的红、绿、蓝三色光组成。任何一种颜色都可以有四个分量:R:红色,取值范围0255,0表示没有红色成分,255为饱和红色;G:绿色,取值范围0255,0表示没有绿色成分,255为饱和绿色;B:蓝色,取值范围0255,0表示没有蓝色成分,255为饱和蓝色;A:Alpha值,即透明度,取值范围0255,0表示完全透明,255表示完全不透明。第9页/共53页8.1.3 颜色(续)在代码中声明颜色的方式常用有两种:1.调用静

9、态方法Color.FromArgb()指定任意颜色,这种方法有两种常用形式。第一种形式为直接指定三种颜色,方法原型为:PublicstaticColorFromArgb(intred,intgreen,intblue);三个参数分别表示R、G、B三色,Alpha值使用默认值255,即完全不透明。例如:Colorred=Color.FromArgb(255,0,0);第二种形式为四个参数,方法原型为:PublicstaticColorFromArgb(intalpha,intred,intgreen,intblue);四个参数分别表示透明度、R、G、B三色值。第10页/共53页8.1.3 颜色(

10、续)2.系统预定义颜色System.Drawing.Color结构中提供了许多静态性,每个属性返回一个命名颜色,在Color结构中已经预定义了141种颜色,可以直接使用。例如:this.BackColor=Color.White;第11页/共53页8.1.4 Paint事件在C#程序中,最简单的方式就是在Paint事件中绘制图形图像,任何一个控件,包括窗体本身,系统都提供了对应的Paint事件。如果在控件的Paint事件中利用传递的参数获取Graphics对象,则绘制的图形图像仅在该控件内显示。如果在窗体的Paint事件中绘制,则绘制的图形图像在该窗体内显示。第12页/共53页8.2 绘制基本

11、图形8.2.1创建画笔画笔(Pen)画笔可用于绘制绘制具有指定宽度和样式的直线、曲线或轮廓形状。下面的示例说明如何创建一支基本的蓝色画笔:PenmyPen=newPen(Color.Blue);PenmyPen=newPen(Color.Blue,10.5f);也可以从画刷对象创建画笔对象,例如:SolidBrushmyBrush=newSolidBrush(Color.Red);PenmyPen=newPen(myBrush);PenmyPen=newPen(myBrush,5);第13页/共53页8.2.2 绘制直线所有绘制图形的方法都位于Graphics中。DrawLine方法:绘制一条

12、直线,常用形式:1)绘制一条连接指定两个Point结构的线。publicvoidDrawLine(Penpen,Pointpt1,Pointpt2)其中,Pen对象确定线条的颜色、宽度和样式;Point结构确定起点和终点。2)绘制一条由坐标对指定的两个点的线。publicvoidDrawLine(Penpen,intx1,inty1,intx2,inty2)其中,Pen对象确定线条的颜色、宽度和样式;x1,y1为起点坐标,x2,y2为终点坐标。第14页/共53页8.2.2 绘制直线在.NET框架中,有一个LineCap枚举,该枚举用于指定系统预定义的线帽,例如圆形、方形、三角形、菱形、箭头等。

13、在System.Drawing.Drawing2D命名空间下,有一个AdjustableArrowCap类,利用该类可以自定义箭头线帽的形状。AdjustableArrowCaparrow=newAdjustableArrowCap(8,10,false);PenmyPen=newPen(Color.Blue,2);myPen.CustomEndCap=arrow;Graphics类提供的TranslateTransform方法可以帮助我们实现平移坐标系的功能。第15页/共53页8.2.2 绘制直线【例8-1】用毫米作为度量单位,绘制一条数学上使用的坐标轴,即让坐标系的原点位于窗体中心,横向从

14、左到右为x正方向,纵向从下到上为y轴正方向,然后在此坐标系统下绘制一条从(0,0)点到(20,20)的直线。运行效果如下:第16页/共53页8.2.2 绘制直线【例8-2】利用DrawLines方法和将根据正弦函数计算出来的多个点之间用直线依次相连,构成正弦曲线显示出来。设计界面和运行界面如下:第17页/共53页8.2.3 矩形 绘制矩形的方法:publicvoidDrawRectangle(Penpen,Rectanglerect)该方法根据指定的矩形结构rect来绘制矩形。publicvoidDrawRectangle(Penpen,intx,inty,intwidth,intheight

15、)该方法通过矩形的左上角坐标(x,y)和宽(width)、高(height)来绘制矩形。第18页/共53页8.2.3 矩形【例8-3】演示矩形的绘制方法。运行效果如下:第19页/共53页8.2.4 多边形多边形是由3条或3条以上的边组成的闭合图形,例如三角形、矩形、五边形和六边形等都属于多边形。DrawPolygon方法:绘制多边形的轮廓DrawPolygon方法一般用于绘制多边形的轮廓,该方法常用形式如下:publicvoidDrawPolygon(Penpen,Pointpoints)第20页/共53页8.2.4 多边形【例8-4】演示多边形的绘制方法。设计界面和运行效果如下:第21页/共

16、53页8.2.5 曲线1.DrawCurve方法用光滑的曲线把给定的点连接起来,常用形式有:1)publicvoidDrawCurve(Penpen,Pointpoints)其中,Point结构类型的数组中指明各节点,默认弯曲强度为0.5。注意,数组中至少要有3个元素。2)publicvoidDrawCurve(Penpen,Pointpoints,floattension)其中,tension指定弯曲强度,该值范围为0.0f-1.0f,超出此范围会产生异常。当弯曲强度为零时,就是直线。第22页/共53页8.2.5 曲线(续)2.DrawClosedCurve方法通过连接数组中节点画一个平滑的

17、曲线,此方法会自动把首尾节点连接起来构成封闭曲线。注意数组中的节点至少要有3个点组成,默认弯曲强度为0.5。1)publicvoidDrawClosedCurve(Penpen,Pointpoints)其中,Point结构类型的数组中指明各节点。2)publicvoidDrawClosedCurve(Penpen,Pointpoints,floattensionFillModefillmode)其中,fillmode指明曲线封闭区域内以何种方式填充。第23页/共53页8.2.5 曲线(续)3.贝塞尔曲线每段贝塞尔曲线由4个点组成,两个端点(p1为起点,p2为终点)和两个控制点(c1和c2)。曲

18、线不经过控制点,但是控制点如同一个磁体吸引曲线,影响并引导曲线向某个方向拉伸。第24页/共53页8.2.5 曲线(续)1)DrawBezier方法:绘制一段贝塞尔曲线的,常用形式:publicvoidDrawBezier(Penpen,Pointpt1,Pointpt2,Pointpt3,Pointpt4)其中pt1、pt2、pt3和pt4分别指定四个点。2)DrawBeziers方法:绘制多段贝塞尔曲线,常用形式:publicvoidDrawBezier(Penpen,Pointpoints)其中points是Point结构的数组,第一段贝塞尔曲线由点数组中的第1-4个点绘制而成。以后每段曲

19、线只需要3个点:2个控制点和一个结束点。前一段曲线的结束点会自动被用作后一段曲线的起始点。第25页/共53页8.2.5 曲线(续)【例8-5】绘制曲线示例。第26页/共53页8.2.6 绘制椭圆和扇形1.绘制椭圆(DrawEllipse方法)1)给定椭圆左上角坐标和椭圆的外接矩形的宽度和高度publicvoidDrawEllipse(Penpen,intx,inty,intwidth,intheight);其中,pen为Pen对象,x,y为椭圆左上角的坐标,width定义椭圆外接矩形的宽度,height定义椭圆外接矩形的高度。2)给定椭圆外接矩形的结构publicvoidDrawEllipse

20、(Penpen,Rectanglerect);其中,rect为Rectangle结构,用于确定椭圆的边界。第27页/共53页8.2.6 绘制椭圆和扇形2.绘制扇形(DrawPie方法)1)publicvoidDrawpie(Penpen,intx,inty,intwidth,intheight,intstartAngle,intsweepAngle);其中,pen为Pen对象,x,y为椭圆左上角的坐标,width定义扇形外接矩形的宽度,height定义扇形外接矩形的高度,startAngle为起始角度(以度为单位),sweepAngle为延伸角度。2)publicvoidDrawPie(Pen

21、pen,Rectanglerect,floatstartAngle,floatsweepAngle);其中,rect为Rectangle结构,用于确定扇形的外接矩形。第28页/共53页8.2.6 绘制椭圆和扇形【例8-6】演示椭圆和扇形的绘制方法。运行效果如下:第29页/共53页8.3 填充图形对于封闭的图形来说,除了用与其对应的Draw方法绘制以外,每个封闭图形都有其对应的以“Fill”为前缀的方法,例如与椭圆对应的填充方法为FillEllipse方法,与多边形对应的填充方法为FillPolygon方法等。第30页/共53页8.3.1 画刷(续)画刷(Brush)画刷是可以与Graphics

22、对象一起使用来创建实心形状和呈现文本的对象。可以用来填充各种图形形状,如矩形、椭圆、饼型图和多边形等。下表列出了几种不同类型的画刷。类类说明说明SolidBrushSolidBrush用纯色填充图形用纯色填充图形TextureBrushTextureBrush用基于光栅的图像用基于光栅的图像(位图、位图、JPGJPG等等)填充图形填充图形LinearGradientBrushLinearGradientBrush用颜色渐变填充图形用颜色渐变填充图形PathGradientBrushPathGradientBrush用渐变效果填充图形用渐变效果填充图形HatchBrushHatchBrush用各

23、种图案填充图形用各种图案填充图形第31页/共53页8.3.2 单色画刷1)使用SolidBrush类定义单色画刷SolidBrush类用于定义单色画刷。该类可以填充图形,比如矩形、椭圆、多边形和路径。例如:SolidBrushsolidBrush=newSolidBrush(Color.Red);Rectangler=newRectangle(5,10,100,100);g.FillEllipse(solidBrush,r);第32页/共53页8.3.2 单色画刷【例8-7】单色画刷演示示例。运行结果如右图所示:第33页/共53页8.3.3 创建渐变画刷(续)2)使用LinearGradien

24、tBrush类定义线性渐变LinearGradientBrush对象用颜色线性渐变填充图形。提供了以下三种构造函数:(1)提供两个点和两种颜色。PublicLinearGradientBrush(Pointpoint1,Pointpoint2,Colorcolor1,Colorcolor2)(2)提供一个矩形和一个角度。PublicLinearGradientBrush(Rectanglerect,Colorcolor1,Colorcolor2,floatangle)(3)指定渐变的模式。PublicLinearGradientBrush(Rectanglerect,Colorcolor1,C

25、olorcolor2,LinearGradientModelinearGradientMode)第34页/共53页8.3.3 渐变画刷(续)【例8-8】颜色渐变效果。运行效果:第35页/共53页8.3.4 填充阴影3)使用HatchBrush类填充简单图案HatchBrush类提供的画刷可以用各种图案填充图形。通过Hatch类型可以设置影线样式。在创建影线的画刷时,能设定前景色、背景色和影线样式。有56种不同的影线样式枚举,该枚举可以参看System.Drawing.Drawing2D.HatchStyle枚举。例如:HatchStyle.Horizontal水平线的图案HatchStyle.

26、ForwardDiagonal从左上到右下的对角线的线条图案HatchStyle.DiagonalBrick具有分层砖块外观的阴影HatchStyle.Shingle带有对角分层鹅卵石外观的阴影HatchStyle.Sphere具有球体彼此相邻放置的外观的阴影第36页/共53页8.3.4 填充阴影【例8-9】阴影效果示例。效果如下:第37页/共53页8.3.5 填充纹理 4)使用TextureBrush类填充复杂图像TextureBrush类使用图像作为填充的样式,它可以使用例如.bmp、.jpg、.png等格式的图像。初始化一个新的TextureBrush对象需要指定填充的图像。Textur

27、eBrush类有多个重载的构造函数,常用有:publicTextureBrush(Imageimage,Rectanglerect)publicTextureBrush(Imageimage,WrapModewrapMode,Rectanglerect)其中,image指定要填充的图像;rect指定图像的矩形块;wrapMode指定如何填充图像,这是一个枚举类型,其值如表8-2所示。第38页/共53页8.3.5 填充纹理【例8-10】创建TextureBrush示例。运行效果如下:第39页/共53页8.3.6 填充路径 5)使用PathGradientBrush类实现彩色渐变1Graphics

28、Path类GraphicsPath类用于创建路径。利用GraphicsPath类,可以绘制形状的轮廓、填充形状内部和创建剪辑区域。下面的代码创建一个路径并在路径中添加一个椭圆。GraphicsPathpath=newGraphicsPath();path.AddEllipse(this.ClientRectangle);2PathGradientBrush类PathGradientBrush称为路径渐变画刷,路径渐变画刷用于从中心向四周通过颜色渐变来填充路径的内部区域。第40页/共53页8.3.6 填充路径【例8-11】路径和路径画刷的使用示例。运行效果:第41页/共53页8.4 图像处理对图

29、像的处理主要有:从文件或其他地方加载图像或创建一个新的图像、显示图像、修改图像、把内存中的图像保存到文件或其他存储器中。8.4.1 8.4.1 图像的绘制图像的绘制1.图像的显示 GDI+提供了两个类用来表示图像:Bitmap类和Metafile类。从文件中读取一个位图并在屏幕中显示出此图像需要三个步骤:创建一个Bitmap对象指明要显示的图像文件;创建一个Graphics对象表明要使用绘图平面;通过调用Graphics对象的DrawImage方法显示图像。第42页/共53页8.4.1 图像的绘制1)创建Bitmap对象Bitmap类有很多重载的构造函数,其中常用的有:PublicBitmap

30、(stringfilename)其中filename是图像文件的名字。可以利用该构造函数创建Bitmap对象。例如:Bitmapbitmap=newBitmap(filename.jpg);2)DrawImage方法Graphics类的DrawImage方法用于在指定位置显示原始图像或者缩放后的图像。该方法的重载形式也非常多,其中常用的一种为:PublicvoidDrawImage(Imageimage,intx,inty,intwidth,intheight)该方法在(x,y)位置点按指定的大小显示图像。利用此方法可以直接显示缩放后的图像。第43页/共53页8.4.1 图像的绘制【例8-12

31、】图像绘制功能。运行效果:第44页/共53页8.4.2 图像的保存1.在窗体上绘制出图形或图像后,利用Image对象的Save方法可以将绘制的内容保存到文件中。2.Save方法有多种重载形式,常用形式为publicvoidSave(stringfilename,ImageFormatformat)其中,fileName为所要保存的文件名。format为保存的图像类型,图像类型由ImageFormat类的属性来指定,这些属性都是只读属性,如表8-3所示。3.还可以利用Save方法将一种图像格式保存为另一种图像格式。4.要将绘制的信息(图形或者图像)保存到图像文件中,其对应的Graphics对象应

32、该从Image对象获取,例如:Graphicsg=Graphics.FromImage(image);其中image为任何从Image类继承的对象,例如Bitmap对象。第45页/共53页8.4.2 图像的保存【例8-13】将绘制的图形和图像保存到文件中。设计界面和绘制效果如下:第46页/共53页8.4.3 8.4.3 图像的拉伸与反转变换【例8-14】图像变换演示。设计界面如下:第47页/共53页8.5 图像的平移、选转与缩放Graphics类提供了三种对图像进行几何变换的方法:TranslateTransform方法:平移RotateTransform方法:旋转ScaleTransform

33、方法:缩放第48页/共53页8.5 图像的平移、旋转和缩放1.TranslateTransform 方法常用形式:publicvoidTranslateTransform(floatdx,floatdy)其中dx表示平移的x分量,dy表示平移的y分量。2.RotateTransform 方法常用形式:publicvoidRotateTransform(floatangle)其中angle表示旋转角度。3.ScaleTransform方法常用形式:publicvoidScaleTransform(floatsx,floatsy)其中sx表示x方向缩放比例,sy表示y方向缩放的比例。第49页/共5

34、3页8.5 图像的平移、旋转和缩放【例8-15】图像的平移、旋转和缩放演示。运行效果如下:第50页/共53页8.6 文字处理1.Graphics类提供的DrawString方法来实现一些文字的特殊效果。DrawString方法的常用形式为publicvoidDrawString(strings,Fontfont,Brushbrush,PointFpoint,StringFormatformat)其中,s为要绘制的字符串,font指定字符串所用的字体,brush指定字符串的颜色和纹理,point指定所绘制的字符串的左上角位置,format指定应用于字符串的格式化属性(如行距和对齐方式)。第51页/共53页8.6 文字处理【例8-16】演示文字绘制效果。运行效果为:第52页/共53页感谢您的观看。第53页/共53页

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 应用文书 > PPT文档

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁