关闭

关闭

关闭

封号提示

内容

首页 C#网络应用编程基础 教学课件 ppt 作者 马骏2 第09章 二维图形图像处理.ppt

C#网络应用编程基础 教学课件 ppt 作者 马骏2 第09章 二维图形图像处理.ppt.ppt

C#网络应用编程基础 教学课件 ppt 作者 马骏2 第09…

希望
2019-09-15 0人阅读 举报 0 0 暂无简介

简介:本文档为《C#网络应用编程基础 教学课件 ppt 作者 马骏2 第09章 二维图形图像处理.pptppt》,可适用于高等教育领域

吉林快3—吉林快三拥有大量关于C#网络应用编程基础 教学课件 ppt 作者 马骏2 第09章 二维图形图像处理.ppt.ppt的实用类文档资料,所有文档由知名合作机构以及专业作者提供,线上总资料超过两个亿,保证满足您的需求。

*第章二维图形图像处理GDI概述绘制基本图形图像处理*GDI概述GDI:GraphicsDeviceInterface(图形设备接口)它提供了高级图形图像处理功能在C#中通过一套部署为托管代码的类来展现提供的图形图像处理功能这套类被称为GDI的托管类。利用GDI可以轻松实现颜色渐变、透明处理、纹理处理、拉伸和缩放等多种高级功能。*GDI主要提供了三类服务:二维矢量图形图像处理文字显示*GDI概述(续)在C#中所有图形图像处理功能都包含在以下名称空间下:SystemDrawing名称空间提供了对GDI基本图形功能的访问主要有Graphics类、Bitmap类、从Brush类继承的类、Font类、Icon类、Image类、Pen类、Color类等。*SystemDrawingDrawingD名称空间提供了高级的二维和矢量图形功能。主要有:梯度型画刷、Matrix类(用于定义几何变换)和GraphicsPath类等。*SystemDrawingImaging名称空间提供了高级图像处理功能。SystemDrawingText名称空间提供了高级字体和文本排版功能*GDI使用的坐标系GDI坐标系中的基本结构Point表示某个特定位置相对于原点的水平和垂直距离。例如:Pointp=newPoint(,)Size也有两个整型属性来表示水平和垂直距离mdashmdashWidth和Height。例如:Sizes=newSize(,)Rectangle是用来指定矩形的坐标的它由一个Point和一个Size组成其中Point表示矩形左上角Size表示矩形大小。*GDI使用的坐标系(续)例如:)在构造函数中分别指定x坐标、y坐标、宽度和高度。Rectangler=newRectangle(,,,))在构造函数中指定Point位置和Size结构。Pointp=newPoint(,)Sizes=newSize(,)Rectangler=newRectangle(p,s)*GDI使用的坐标系(续)GDI中坐标系的分类世界坐标系设备坐标系页面坐标系*GDI使用的坐标系(续)【例】不同坐标系之间的转换示例privatevoidFormPaint(objectsender,PaintEventArgse){GraphicsmyGraphics=eGraphicsmyGraphicsTranslateTransform(F,F)myGraphicsPageUnit=GraphicsUnitInchPenmyPen=newPen(ColorBlack,myGraphicsDpiX)myGraphicsDrawLine(myPen,,,,)}*Graphics类Graphics类包含在SystemDrawing名称空间下它提供了简单的图形图像处理功能。在绘制图形图像前首先必须创建Graphics对象然后利用这个对象绘制直线、曲线、椭圆等图形图像。*有三种常见的创建Graphics对象的方法。在窗体或控件的Paint事件中获取Graphics对象。例如:privatevoidFormPaint(objectsender,SystemWindowsFormsPaintEventArgse){Graphicsg=eGraphics}*Graphics类(续)通过当前窗体的CreateGraphics方法把当前窗体的画笔、字体、颜色作为默认值获取对Graphics对象的引用。例如:Graphicsgg=thisCreateGraphics()helliphellip*从继承自图像的任何对象创建Graphics对象例如:BitmapmyBitmap=newBitmap(C:mytestPicsmyPicbmp)Graphicsg=GraphicsFromImage(myBitmap)*颜色颜色是进行图形操作的基本要素它封装在SystemDrawingColor结构中。人眼可以分辨的任何颜色都是由一定的红、绿、蓝三色光组成。任何一种颜色都可以有四个分量分别是:R、G、B、A。其中:R:红色取值范围~表示没有红色成分为饱和红色G:绿色取值范围~表示没有绿色成分为饱和绿色B:蓝色取值范围~表示没有蓝色成分为饱和蓝色A:Alpha值即透明度取值范围~表示完全透明表示完全不透明。*颜色(续)在代码中声明颜色的方式常用有两种:调用静态方法ColorFromArgb()指定任意颜色,这种方法有两种常用形式。第一种形式为直接指定三种颜色方法原型为:PublicstaticColorFromArgb(intred,intgreen,intblue)三个参数分别表示R、G、B三色Alpha值使用默认值即完全不透明。例如:Colorred=ColorFromArgb(,,)第二种形式为四个参数方法原型为:PublicstaticColorFromArgb(intalpha,intred,intgreen,intblue)四个参数分别表示透明度、R、G、B三色值。*颜色(续)系统预定义颜色SystemDrawingColor结构中提供了许多静态性每个属性返回一个命名颜色在Color结构中已经预定义了种颜色可以直接使用。例如:thisBackColor=ColorWhite*画笔和画刷在GDI中可以使用画笔和画刷绘制或填充图形、文本和图像。笔是Pen类的实例用于绘制各种直线、空心图形和实心图形等。画刷是从Brush类派生的任何类的实例用于填充形状或绘制文本。*画笔(Pen)画笔可用于绘制绘制具有指定宽度和样式的直线、曲线或轮廓形状。下面的示例说明如何创建一支基本的蓝色画笔:PenmyPen=newPen(ColorBlue)PenmyPen=newPen(ColorBlue,f)也可以从画刷对象创建画笔对象例如:SolidBrushmyBrush=newSolidBrush(ColorRed)PenmyPen=newPen(myBrush)PenmyPen=newPen(myBrush,)*画笔和画刷(续)【例】画笔(Pen)的用法演示示例。添加名称空间引用:usingSystemDrawingDrawingD并用如下代码添加FormPaint事件。Graphicsg=eGraphics创建Graphics对象Penblackpen=newPen(ColorBlack,f)创建一支黑色的画笔绘制字符串gDrawString(黑色,宽度为,thisFont,BrushesBlack,,)绘制宽度为f的黑色直线gDrawLine(blackpen,newPoint(,),newPoint(,))创建一支红色的画笔Penredpen=newPen(ColorRed,f)绘制字符串gDrawString(红色,宽度为,thisFont,BrushesBlack,,)绘制宽度为的红色直线gDrawLine(redpen,newPoint(,),newPoint(,))*画笔和画刷(续)创建一支蓝色的笔Penbluepen=newPen(ColorBlue,)定义直线的样式bluepenStartCap=LineCapFlatbluepenEndCap=LineCapArrowAnchor绘制字符串gDrawString(ldquo蓝色箭头线rdquo,thisFont,BrushesBlack,,)绘制宽度为的蓝色箭头线gDrawLine(bluepen,newPoint(,),newPoint(,))再创建一支黑色的画笔Peniblackpen=newPen(ColorBlack,f)定义直线的样式iblackpenDashStyle=DashStyleCustomiblackpenDashPattern=newfloat{,}iblackpenEndCap=LineCapNoAnchor绘制字符串gDrawString(自定义虚线,thisFont,BrushesBlack,,)*画笔和画刷(续)绘制宽度为的自定义虚线gDrawLine(iblackpen,newPoint(,),newPoint(,))再创建一支红色的笔Peniredpen=newPen(ColorRed,f)定义直线的样式iredpenDashStyle=DashStyleDot绘制字符串gDrawString(点划线,thisFont,BrushesBlack,,)绘制宽度为的点划线gDrawLine(iredpen,newPoint(,),newPoint(,))*画笔和画刷(续)画刷(Brush)画刷是可以与Graphics对象一起使用来创建实心形状和呈现文本的对象。可以用来填充各种图形形状如矩形、椭圆、饼型图和多边形等。*画笔和画刷(续))使用SolidBrush类定义单色画刷SolidBrush类用于定义单色画刷。该类可以填充图形比如矩形、椭圆、多边形和路径。【例】单色画刷演示示例。添加名称空间引用:usingSystemDrawingDrawingD并用如下代码添加FormPaint事件。Graphicsg=eGraphicsSolidBrushmySolidBrush=newSolidBrush(ColorRed)gFillEllipse(mySolidBrush,,,,)*画笔和画刷(续))使用HatchBrush类填充简单图案HatchBrush类提供的画刷可以用各种图案填充图形。通过Hatch类型可以设置影线样式。在创建影线的画刷时能设定前景色、背景色和影线样式。有种不同的影线样式枚举。【例】填充简单图案示例。添加名称空间引用:usingSystemDrawingDrawingD并用如下代码添加Formpaint事件。Graphicsg=eGraphicsHatchBrushmyHatchBrush=newHatchBrush(HatchStyleCross,ColorWhite,ColorRed)gFillEllipse(myHatchBrush,thisClientRectangle)*画笔和画刷(续))使用TextureBrush类填充复杂图像TextureBrush类使用图像作为填充的样式它可以使用例如bmp、jpg、png等格式的图像。初始化一个新的TextureBrush对象需要指定填充的图像。*画笔和画刷(续)【例】创建TextureBrush示例。将所用图像添加到项目中并修改图片的【复制到输出目录】属性为ldquo总是复制rdquo用如下代码添加FormPaint事件。创建Graphics对象Graphicsg=eGraphics根据文件名创建原始大小的Bitmap对象Bitmapbitmap=newBitmap(xuejpg)将其缩放到当前窗体大小bitmap=newBitmap(bitmap,thisClientRectangleSize)TextureBrushmyBrush=newTextureBrush(bitmap)gFillEllipse(myBrush,thisClientRectangle)*)使用LinearGradientBrush类定义线性渐变*画笔和画刷(续)LinearGradientBrush对象用颜色线性渐变填充图形。提供了以下三种构造函数:()提供两个点和两种颜色。PublicLinearGradientBrush(Pointpoint,Pointpoint,Colorcolor,Colorcolor)()提供一个矩形和一个角度。PublicLinearGradientBrush(Rectanglerect,Colorcolor,Colorcolor,floatangle)()指定渐变的模式。PublicLinearGradientBrush(Rectanglerect,Colorcolor,Colorcolor,LinearGradientModelinearGradientMode)*画笔和画刷(续)【例】使用点描述线性渐变。添加名称空间引用:usingSystemDrawingDrawingD并用如下代码添加FormPaint事件。Graphicsg=eGraphicsLinearGradientBrushmyBrush=newLinearGradientBrush(newPoint(,),newPoint(,),ColorWhite,ColorBlue)gFillRectangle(myBrush,thisClientRectangle)myBrushDispose()*画笔和画刷(续)【例】使用矩形描述线性渐变。添加名称空间引用:usingSystemDrawingDrawingD并用如下代码添加FormPaint事件。GraphicsmyGraphics=eGraphicsLinearGradientBrushlgb=newLinearGradientBrush(newRectangle(,,,),ColorWhite,ColorBlack,f)eGraphicsFillRectangle(lgb,thisClientRectangle)lgbDispose()*画笔和画刷(续))使用PathGradientBrush类实现彩色渐变在GDI中把一个或多个图形组成的形体称为路径。可以使用GraphicsPath类定义路径使用PathGradientBrush类定义路径内部的渐变色画刷。渐变色从路径的内部中心点逐渐过渡到路径的外边界边缘。PathGradientBrush类提供了三种重载的构造函数其中常用的是通过指定路径实现彩色渐变。常用形式如下:PublicPathGradientBrush(GraphicsPathpath)【例】路径和路径画刷的使用示例。*画笔和画刷(续)Graphicsg=eGraphicsPointcenterPoint=newPoint(,)intR=GraphicsPathpath=newGraphicsPath()pathAddEllipse(centerPointXR,centerPointYR,*R,*R)PathGradientBrushbrush=newPathGradientBrush(path)指定路径中心点brushCenterPoint=centerPoint指定路径中心点的颜色brushCenterColor=ColorWhiteColor类型的数组指定与路径上每个顶点对应的颜色brushSurroundColors=newColor{ColorRed}gFillEllipse(brush,centerPointXR,centerPointYR,*R,*R)centerPoint=newPoint(,)R=path=newGraphicsPath()pathAddEllipse(centerPointXR,centerPointYR,*R,*R)*画笔和画刷(续)pathAddEllipse(centerPointX*R,centerPointY*R,*R,*R)pathAddEllipse(centerPointX*R,centerPointY*R,*R,*R)brush=newPathGradientBrush(path)brushCenterPoint=centerPointbrushCenterColor=ColorWhitebrushSurroundColors=newColor{ColorBlack,ColorBlue,ColorGreen}gFillPath(brush,path)*绘制基本图形所有绘制图形的方法都位于Graphics中。直线在GDI中绘制直线首先需要创建一个Graphics对象和一个Pen对象。Graphics对象提供了绘图的方法只有创建了Graphics对象才能进行绘图操作Pen对象可以指定所绘制直线的一些属性例如:线的颜色、宽度和类型等。绘制直线用到Graphics对象中的两种方法:DrawLine方法和DrawLines方法。DrawLine用于绘制一条直线DrawLines用于绘制多条直线。*直线(续)DrawLine方法常用形式)绘制一条连接指定两个Point结构的线。publicvoidDrawLine(Penpen,Pointpt,Pointpt)其中Pen对象确定线条的颜色、宽度和样式Point结构确定起点和终点。)绘制一条由坐标对指定的两个点的线。publicvoidDrawLine(Penpen,intx,inty,intx,inty)其中Pen对象确定线条的颜色、宽度和样式x,y为起点坐标x,y为终点坐标。*直线(续)DrawLines方法常用形式绘制一系列点组成的线。publicvoidDrawLines(Penpen,Pointpoints)其中Pen对象确定线条的颜色、宽度和样式数组中的第一个点指定起始点后面的每个点都以相临的前一个点为起始点组成线段。*直线(续)【例】使用DrawLine方法和DrawLines方法绘制直线。用如下代码添加FrorPaint事件。Graphicsg=eGraphics创建Graphics对象PenblackPen=newPen(ColorBlack,)创建一支黑色的画笔Pointpoint=newPoint(,)定义直线的两个点Pointpoint=newPoint(,)gDrawLine(blackPen,point,point)绘制直线PenredPen=newPen(ColorRed,)创建一支红色的画笔intx=定义起点和终点坐标inty=intx=inty=gDrawLine(redPen,x,y,x,y)绘制直线*直线(续)Penpen=newPen(ColorBlue,)创建一支蓝色的画笔Pointpoints={newPoint(,),newPoint(,),newPoint(,),newPoint(,)}定义一系列点绘制直线gDrawLines(pen,points)*矩形使用DrawRectangle方法绘制矩形常用形式)指定绘制矩形的结构publicvoidDrawRectangle(Penpen,Rectanglerect)其中rect表示要绘制的矩形的结构。)指定矩形左上角的坐标及宽和高publicvoidDrawRectangle(Penpen,intx,inty,intwidth,intheight)其中x,y为矩形左上角的坐标值。使用DrawRectangles方法绘制多个矩形常用形式publicvoidDrawRectangles(Penpen,Rectanglerects)其中rects表示要绘制的多个矩形的结构。*矩形(续)使用FillRectangle方法填充矩形常用形式)指定填充画刷和矩形的结构publicvoidFillRectangle(Brushbrush,Rectanglerect)其中brush指定填充矩形的画刷rect表示要绘制的矩形的结构。)指定填充画刷和矩形左上角的坐标及宽和高publicvoidFillRectangle(Brushbrush,intx,inty,intwidth,intheight)其中brush指定填充矩形的画刷x,y表示矩形左上角的坐标width和height表示矩形的宽和高。*使用FillRectangles方法填充多个矩形常用形式publicvoidFillRectangles(Brushbrush,Rectanglerects)*矩形(续)【例】绘制矩形方法示例。用以下代码添加FormPaint事件。Graphicsg=eGraphics创建Graphics对象PenblackPen=newPen(ColorBlack,)创建一支黑色的画笔Rectanglerect=newRectangle(,,,)指定矩形的结构gDrawRectangle(blackPen,rect)绘制矩形PenredPen=newPen(ColorRed,)创建一支红色的画笔指定矩形左上角的坐标及宽和高intx=矩形左上角点的x坐标分量inty=矩形左上角点的y坐标分量intwidth=矩形的宽intheight=矩形的高gDrawRectangle(redPen,x,y,width,height)绘制矩形PenbluePen=newPen(ColorBlue,)创建一支蓝色的画笔*矩形(续)Rectanglerects={newRectangle(,,,),newRectangle(,,,),newRectangle(,,,)}指定多个矩形的结构gDrawRectangles(bluePen,rects)绘制多个矩形创建一支黑色的画刷SolidBrushblackBrush=newSolidBrush(ColorBlack)Rectanglerect=newRectangle(,,,)指定矩形的结构gFillRectangle(blackBrush,rect)填充矩形SolidBrushredBrush=newSolidBrush(ColorRed)创建一支黑色的画刷指定矩形左上角的坐标及宽和高intix=矩形左上角点的x坐标分量intiy=矩形左上角点的y坐标分量intiwidth=矩形的宽intiheight=矩形的高gFillRectangle(redBrush,ix,iy,iwidth,iheight)填充矩形*矩形(续)创建一支蓝色的画刷SolidBrushblueBrush=newSolidBrush(ColorBlue)Rectangleirects={newRectangle(,,,),newRectangle(,,,),newRectangle(,,,)}指定多个矩形的结构填充多个矩形gFillRectangles(blueBrush,irects)*多边形DrawPolygon方法DrawPolygon方法用来绘制多边形的轮廓一个多边形是由数组中指明的节点连接起来而组成的。DrawPolygon方法常用形式如下:publicvoidDrawPolygon(Penpen,Pointpoints)FillPolygon方法FillPolygon方法用来填充多边形的封闭区域。FillPolygon方法常用形式如下:publicvoidFillPolygon(Brushbrush,Pointpoints)*多边形(续)【例】绘制多边形示例。添加名称空间引用usingSystemDrawingDrawingD并用如下代码添加窗体的Paint事件。Graphicsg=eGraphics创建Graphics对象Penpen=newPen(ColorRed)创建一支红色的画笔Pointpoints={newPoint(,),newPoint(,),newPoint(,),newPoint(,),newPoint(,),newPoint(,),newPoint(,),newPoint(,)}定义多边形的点*多边形(续)gDrawPolygon(pen,points)绘制多边形轮廓Pointpoints={newPoint(,),newPoint(,),newPoint(,),newPoint(,),newPoint(,),newPoint(,),newPoint(,),newPoint(,)}定义第二个多边形的点填充多边形封闭区域gFillPolygon(newSolidBrush(ColorRed),points)*曲线DrawCurve方法这个方法用光滑的曲线把给定的点连接起来常用形式有:)publicvoidDrawCurve(Penpen,Pointpoints)其中Point结构类型的数组中指明各节点默认弯曲强度为。注意数组中至少要有个元素。)publicvoidDrawCurve(Penpen,Pointpoints,floattension)其中tension指定弯曲强度该值范围为f~f超出此范围会产生异常。当弯曲强度为零时就是直线。*曲线(续)DrawClosedCurve方法这个方法是通过连接数组中节点画一个平滑的曲线此方法会自动把首尾节点连接起来构成封闭曲线。注意数组中的节点至少要有个点组成默认弯曲强度为。)publicvoidDrawClosedCurve(Penpen,Pointpoints)其中Point结构类型的数组中指明各节点。)publicvoidDrawClosedCurve(Penpen,Pointpoints,floattensionFillModefillmode)其中fillmode指明曲线封闭区域内以何种方式填充。*曲线(续)贝塞尔曲线每段贝塞尔曲线由个点组成两个端点(p为起点p为终点)和两个控制点(c和c)。曲线不经过控制点但是控制点如同一个磁体吸引曲线影响并引导曲线向某个方向拉伸。*曲线(续))DrawBezier方法:用来绘制一段贝塞尔曲线的常用形式如下:publicvoidDrawBezier(Penpen,PointptPointptPointptPointpt)其中pt、pt、pt和pt分别指定四个点。*)DrawBeziers方法:用来绘制多段贝塞尔曲线常用形式如下:publicvoidDrawBezier(Penpen,Pointpoints)其中points是Point结构的数组第一段贝塞尔曲线由点数组中的第~个点绘制而成。以后每段曲线只需要个点:个控制点和一个结束点。前一段曲线的结束点会自动被用作后一段曲线的起始点。*曲线(续)【例】绘制曲线示例。添加名称空间引用:usingSystemDrawingDrawingD并用如下代码添加窗体的Paint事件。Graphicsg=eGraphics创建Graphics对象PenredPen=newPen(ColorRed,)创建一支红色的画笔Pointcurvepoints={newPoint(,),newPoint(,),newPoint(,),newPoint(,)}定义组成曲线的点gDrawCurve(redPen,curvepoints)PenblackPen=newPen(ColorBlack,)创建一支黑色的画笔Pointcurvepoints={newPoint(,),newPoint(,),newPoint(,),newPoint(,)}定义组成曲线的点*曲线(续)floattension=fgDrawCurve(blackPen,curvepoints,tension)Pointcurvepoints={newPoint(,),newPoint(,),newPoint(,),newPoint(,)}定义组成曲线的点gDrawClosedCurve(redPen,curvepoints)Pointcurvepoints={newPoint(,),newPoint(,),newPoint(,),newPoint(,)}定义组成曲线的点floattension=fFillModeafillmode=FillModeAlternategDrawClosedCurve(redPen,curvepoints,tension,afillmode)定义组成贝塞尔曲线的点Pointistart=newPoint(,)Pointicontrol=newPoint(,)*曲线(续)Pointicontrol=newPoint(,)Pointiend=newPoint(,)gDrawBezier(blackPen,istart,icontrol,icontrol,iend)绘制贝塞尔曲线定义组成贝塞尔曲线的点Pointjstart=newPoint(,)Pointjcontrol=newPoint(,)Pointjcontrol=newPoint(,)Pointjend=newPoint(,)Pointjcontrol=newPoint(,)Pointjcontrol=newPoint(,)Pointjend=newPoint(,)Pointbezierpoints={jstart,jcontrol,jcontrol,jend,jcontrol,jcontrol,jend}gDrawBeziers(redPen,bezierpoints)绘制贝塞尔曲线*椭圆DrawEllipse方法)给定椭圆左上角坐标和椭圆的外接矩形的宽度和高度publicvoidDrawEllipse(Penpen,intx,inty,intwidth,intheight)其中pen为Pen对象x,y为椭圆左上角的坐标width定义椭圆外接矩形的宽度height定义椭圆外接矩形的高度。)给定椭圆外接矩形的结构publicvoidDrawEllipse(Penpen,Rectanglerect)其中rect为Rectangle结构用于确定椭圆的边界。*椭圆(续)FillEllipse方法)给定椭圆左上角坐标和椭圆的外接矩形的宽度和高度publicvoidFillEllipse(Brushbrush,intx,inty,intwidth,intheight)其中x,y为椭圆左上角的坐标width定义椭圆外接矩形的宽度height定义椭圆外接矩形的高度。*)给定椭圆外接矩形的结构publicvoidFillEllipse(Brushbrush,Rectanglerect)其中rect为Rectangle结构用于确定椭圆的边界。*椭圆(续)【例】绘制椭圆示例。用下页代码添加窗体的Paint事件。Graphicsg=eGraphics创建Graphics对象PenredPen=newPen(ColorRed,)创建一支红色的画笔gDrawEllipse(redPen,,,,)用DrawEllipse方法绘制椭圆轮廓PenblackPen=newPen(ColorBlack,)创建一支黑色的画笔Rectangleirect=newRectangle(,,,)指定矩形的结构gDrawEllipse(blackPen,irect)用DrawEllipse方法绘制椭圆轮廓SolidBrushredBrush=newSolidBrush(ColorRed)创建一支红色的画刷gFillEllipse(redBrush,,,,)SolidBrushblackBrush=newSolidBrush(ColorBlack)Rectanglejrect=newRectangle(,,,)gFillEllipse(blackBrush,jrect)*椭圆(续)blackPenDispose()redPenDispose()blackBrushDispose()redBrushDispose()gDispose()*扇形(续)DrawPie方法)publicvoidDrawpie(Penpen,intx,inty,intwidth,intheight,intstartAngle,intsweepAngle)其中pen为Pen对象x,y为椭圆左上角的坐标width定义扇形外接矩形的宽度height定义扇形外接矩形的高度startAngle为起始角度(以度为单位)sweepAngle为延伸角度。)publicvoidDrawPie(Penpen,Rectanglerect,floatstartAngle,floatsweepAngle)其中rect为Rectangle结构用于确定扇形的外接矩形。*扇形(续)FillPie方法)publicvoidFillPie(Brushbrush,intx,inty,intwidth,intheight,intstartAngle,intsweepAngle)其中brush为SolidBrush对象x,y为椭圆左上角的坐标width定义扇形外接矩形的宽度height定义扇形外接矩形的高度startAngle为起始角度(以度为单位)sweepAngle为延伸角度。*)publicvoidFillPie(Brushbrush,Rectanglerect,floatstartAngle,floatsweepAngle)其中rect为Rectangle结构用于确定扇形的边界。*扇形(续)【例】绘制扇形示例。用如下代码添加窗体的Paint事件。Graphicsg=eGraphics创建Graphics对象PenredPen=newPen(ColorRed,)创建一支红色的画笔用DrawPie方法绘制扇形轮廓gDrawPie(redPen,,,,,f,f)PenbluePen=newPen(ColorBlue,)创建一支蓝色的画笔用DrawPie方法绘制扇形轮廓Rectanglerect=newRectangle(,,,)指定矩形的结构floatstatrAngle=f给定扇形起始角度floatsweepAngle=fgDrawPie(bluePen,rect,statrAngle,sweepAngle)*扇形(续)SolidBrushredBrush=newSolidBrush(ColorRed)创建一支红色的画刷gFillPie(redBrush,,,,,f,f)用FillPie方法绘制扇形轮廓SolidBrushblueBrush=newSolidBrush(ColorBlue)创建一支蓝色的画刷Rectanglerect=newRectangle(,,,)gFillPie(blueBrush,rect,statrAngle,sweepAngle)bluePenDispose()redPenDispose()blueBrushDispose()redBrushDispose()gDispose()*扇形(续)【例】用扇形描述磁盘空间的使用情况。添加名称空间引用:usingSystemIO添加窗体的Paint事件Rectanglerect=newRectangle(,,,)Rectanglerect=newRectangle(,,,)RectanglefreeLegend=newRectangle(,,,)RectangleusedLegend=newRectangle(,,,)eGraphicsDrawRectangle(PensBlack,rect)if(isSpaceInfoAvailable==true){eGraphicsFillPie(BrushesGreen,rect,,sweep)eGraphicsFillPie(BrushesRed,rect,sweep,sweep)eGraphicsFillRectangle(BrushesGreen,freeLegend)eGraphicsFillRectangle(BrushesRed,usedLegend)}*扇形(续)定义LoadDriveInfo方法privatevoidLoadDriveInfo(stringdriveLetter){DriveInfodriveInfotry{driveInfo=newDriveInfo(driveLetter)}catch(ArgumentExceptionex){MessageBoxShow(ThedrivelettercannotbenrexMessage,DriveLettererror,MessageBoxButtonsOK,MessageBoxIconError)return}catch(ArgumentExceptionex){MessageBoxShow(ThedrivelettermustbeintherangeofaznrexMessage,DriveLettererror,MessageBoxButtonsOK,MessageBoxIconError)return}*扇形(续)thistextBoxDriveNameText=driveInfoNametry{if(driveInfoVolumeLabelLength)thistextBoxDriveVolumeLabelText=driveInfoVolumeLabelelsethistextBoxDriveVolumeLabelText=NonethistextBoxDriveFormatText=driveInfoDriveFormattotalSpace=driveInfoTotalSizefreeSpace=driveInfoTotalFreeSpaceusedSpace=totalSpacefreeSpacesweep=f*freeSpacetotalSpacefreepercent=(int)(f*freeSpacetotalSpace)usepercent=(int)(f*usedSpacetotalSpace)isSpaceInfoAvailable=true}*扇形(续)catch{thistextBoxDriveVolumeLabelText=NotavailablethistextBoxDriveFormatText=NotavailableisSpaceInfoAvailable=false}thistextBoxDriveTypeText=driveInfoDriveTypeToString()thistextBoxDriveRootDirectoryText=driveInfoRootDirectoryToString()dirInfo=driveInfoRootDirectoryif(driveInfoIsReady==true)thislableDriveReadyStatusText=DriveisReadyelsethislableDriveReadyStatusText=DriveisNOTReady}*扇形(续)添加comboBoxDrivesOnPc的SelectionChangeCommitted事件。LoadDriveInfo(comboBoxDrivesOnPcItemscomboBoxDrivesOnPcSelectedIndexToString())labelText=可用空间:freepercentToString()labelText=ldquo已用空间:rdquousepercentToString()ldquordquolabelText=分区总容量:(int)(totalSpace)GBthisInvalidate()*图像处理图像的显示GDI提供了两个类用来表示图像:Bitmap类和Metafile类。从文件中读取一个位图并在屏幕中显示出此图像需要三个步骤:①创建一个Bitmap对象指明要显示的图像文件②创建一个Graphics对象表明要使用绘图平面③通过调用Graphics对象的DrawImage方法显示图像。*图像的显示与保存(续))创建Bitmap对象Bitmap类有很多重载的构造函数其中常用的有:PublicBitmap(stringfilename)其中filename是图像文件的名字。可以利用该构造函数创建Bitmap对象。例如:Bitmapbitmap=newBitmap(filenamejpg)*)DrawImage方法Graphics类的DrawImage方法用于在指定位置显示原始图像或者缩放后的图像。该方法的重载形式也非常多其中常用的一种为:PublicvoidDrawImage(Imageimage,intx,inty,intwidth,intheight)该方法在(x,y)位置点按指定的大小显示图像。利用此方法可以直接显示缩放后的图像。*图像的显示与保存(续)【例】实现显示图像的功能。把所用图片添加到项目中并修改图片的【复制到输出目录】属性为ldquo总是复制rdquo。添加窗体的Paint事件。Bitmapbitmap=newBitmap(ldquoshubmprdquo)eGraphicsDrawImage(bitmap,,)eGraphicsDrawImage(bitmap,,,bitmapWidth,bitmapHeight)eGraphicsDrawImage(bitmap,,,,)bitmapDispose()eDispose()*图像的显示与保存(续)图像的保存图像的保存要用到ImageSave方法。这个方法有多种构造函数其中最常用的形式如下:publicvoidSave(stringfilename)其中filename为图像或图形所要保存的路径。【例】将绘制的图形或图像保存到文件中。添加字段声明:Bitmapimage添加【显示】按钮的Click事件代码:image=newBitmap(shubmp)Graphicsg=thisCreateGraphics()gDrawImage(image,,,,)*图像的显示与保存(续)添加【保存】按钮的Click事件代码:try{if(image!=){imageSave(c:myBitmapbmp)MessageBoxShow(保存成功!)}}catch(Exception){MessageBoxShow(保存失败)}*图像的平移、旋转和缩放Graphics类提供了三种对图像进行几何变换的方法它们分别是TranslateTransform方法、RotateTransform方法、ScaleTransform方法分别用于图形图像的平移、旋转和缩放。TranslateTran

类似资料

该用户的其他资料

2015.11创新杯创新杯说课大赛国赛说课课件.ppt

19--课程..创新杯说课大赛国赛说课课件.ppt

2014创新杯直线的倾斜角与斜率课程创新杯说课大赛国赛说课课件.ppt

13幼师3 住创新杯说课大赛国赛说课课件.ppt

2010血栓的形成讲课曹颜冬创新杯说课大赛国赛说课课件.ppt

职业精品

精彩专题

让你惊艳又清新的英文短诗合集

让你清新惊艳的英文小诗有哪些呢?小编汇集了以下经典英文诗、唯美爱情小诗、英文诗押韵技巧等等,让爱好英文短诗的你能够一起体验其中的乐趣!

用户评论

0/200
上传我的资料

热门资料排行换一换

  • 三年级少先队活动计划

  • 反腐倡廉主题教育讲座(党课…

  • 《中国节》教学设计

  • 学校生活饮用水卫生管理制度

  • 如何抓好班组安全管理 如何做好班组…

  • 一般纳税人工业企业会计实务操作

  • 社区儿童之家工作制度

  • 邻里节主持词

  • 退休人员返聘协议(模板)

  • 资料评价:

    / 86
    所需积分:0 立即下载

    VIP

    在线
    客服

    免费
    邮箱

    吉林快3—吉林快三服务号

    扫描关注领取更多福利