您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 管理学资料 > 第06章 GDI+与图形编程
GDI+与图形编程第06章目录GDI+是GDI(GraphicsDeviceInterface,图形设备接口)的改进产品。以前的GDI绘图机制非常复杂,要考虑到显示设备环境、显示模式、重绘等问题,比较混乱。微软对GDI进行了改进,打造了一款全新的图形设备接口GDI+,解决了原来GDI中的很多问题,使用户可以更容易地使用接口来绘制图形。6.1GDI+的概念6.2GDI+的命名空间首先在项目中添加对System.Drawing.dll程序集的引用然后在代码中添加如下命名空间:usingSystem.Drawing.Drawing2D;6.3Graphics对象在GDI+的所有类中,Graphics类是核心,在绘制任何图形之前,一定要先用Graphics类创建一个对象,创建的Graphics对象其实相当于一张画布,可以调用绘图方法在其上面绘图。图形设计分为两个步骤:一是创建Graphics对象,二是使用Graphics对象的方法进行绘图。创建Graphics对象的方法有三种:1.利用窗体或控件的Paint事件的参数PaintEventArgsprivatevoidForm1_Paint(objectsender,PaintEventArgse){Graphicsg=e.Graphics;//声明一个Graphics对象g}2.使用窗体或控件的CreateGraphics方法Graphicsg;g=this.CreateGraphics();3.使用Image的派生类创建Graphics对象Bitmapb=newBitmap(aa.bmp);Graphicsg=Graphics.FromImage(b);该方法一般应用于对象已经存在的情况该方法一般应用于C#中对图像进行处理的场合6.3.1Pen对象Pen对象又称画笔对象,主要用来绘制线条、多边形、曲线等几何图形。1.常用属性:Alignment:设置此Pen对象的对齐方式Color:设置此Pen对象的颜色Width:设置此Pen对象的宽度StartCap和EndCap:设置此Pen对象绘制直线起点和终点的帽样DashStyle:设置此Pen对象绘制的虚线样式枚举:Custom(用户自定义)、Dash(划线段)、DashDot(重复划线点图案)、DashDotDot(重复划线点点图案)、Dot(点构成)、Solid(实线)枚举:Flat(两端为方形的方帽)、Round(两端为圆角的圆帽)、Triangle(两端为带尖形的三角帽)PenStyle:设置此Pen对象绘制的实线样式DashCap:指定虚线两端风格2.Pen对象的创建创建某一颜色的Pen对象:publicPen(Color)创建某一刷子样式的Pen对象:publicPen(Brush)创建某一刷子样式并具有相应宽度的Pen对象:publicPen(Brush,float)创建某一颜色并具有相应宽度的Pen对象:publicPen(Color,float)6.3.2Font对象实例:privatevoidbutton1_Click(objectsender,EventArgse){Fontfnt=newFont(隶书,20,FontStyle.Italic|FontStyle.Bold);Graphicsg=this.CreateGraphics();g.DrawString(你好,我在绘图,fnt,newSolidBrush(Color.Blue),20,30);}6.3.3Brush对象1.SolidBrush画刷SolidBrushmyBrush=newSolidBrush(Color.Red);SolidBrush类用来定义单一颜色的Brush格式:publicSolidBrush(Color.Color)2.HatchBrush画刷HatchBrush类用来定义阴影画刷,可以定义前景色、背景色和阴影风格。格式1:publicHatchBrush(HatchStyle,Color)以HatchStyle指定的图案或阴影方式和Color指定的前景色创建画刷,默认背景色为黑色格式2:publicHatchBrush(HatchStyle,Color,Color)以HatchStyle指定的图案或阴影方式和Color指定的前景色和背景色创建画刷HatchBrush画刷属性:BackgroundColor:获取HatchBrush对象背景色ForegroundColor:获取HatchBrush对象前景色HatchStyle:获取HatchBrush对象阴影样式HatchStyle属性说明HatchStyle属性说明BackwardDiagonal背景对角DashedUpwardDiagonal虚线对角向上Cross十字DashedVertical虚线垂直DarkDownwardDiagonal对角向下DiagonalBrick对角砖状DarkHorizontal水平DiagonalCross对角十字DarkUpwardDiagonal对角向上Divot草皮DarkVertical垂直DottedDiamond点状DashedDownwardDiagonal虚线对角向下DottedGrid点格状DashedHorizontal虚线水平ForwardDiagonal向前对角Vertical垂直线Horizontal水平线实例:对角砖状阴影样式privatevoidbutton1_Click(objectsender,EventArgse){Graphicsg=this.CreateGraphics();HatchBrushmyBrush=newHatchBrush(HatchStyle.DiagonalBrick,Color.Red,Color.Pink);g.FillRectangle(myBrush,10,10,250,100);}3.LinearGradientBrush画刷LinearGradientBrush是渐变画刷的一种,用来产生线型渐变效果。常用渐变效果由两个颜色逐渐变化而来。格式:publicLinearGradientBrush(Point1,Point2,Color1,Color2)Point1表示渐变的起始点,Point2表示渐变的终止点,Color1表示渐变的起始色,Color2表示渐变的终止色实例:线性渐变画刷privatevoidbutton1_Click(objectsender,EventArgse){Graphicsg=this.pictureBox1.CreateGraphics();g.Clear(this.BackColor);LinearGradientBrushmyBrush=newLinearGradientBrush(newPoint(0,20),newPoint(20,0),Color.Red,Color.Blue);g.FillRectangle(myBrush,0,0,200,100);myBrush.WrapMode=WrapMode.TileFlipX;g.FillRectangle(myBrush,0,110,200,100);}6.4常用图形绘制方法6.4.1画直线画直线使用Graphics的DrawLine方法格式1:publicvoidDrawLine(Penpen,intx1,inty1,intx2,inty2);在由(x1,y1)和(x2,y2)指定点之间画一条线格式2:publicvoidDrawLine(Penpen,Pointpt1,Pointpt2);在pt1和pt2指定的两个点之间画一条线实例:画直线privatevoidbutton1_Click(objectsender,EventArgse){Graphicsg=this.CreateGraphics();PenmyPen=newPen(Color.Red,5);g.DrawLine(myPen,5,5,200,100);Pointpt1=newPoint(5,100);Pointpt2=newPoint(200,5);g.DrawLine(myPen,pt1,pt2);}6.4.2画椭圆画椭圆使用Graphics的DrawEllipse方法格式1:publicvoidDrawEllipse(Penpen,Rectanglerect);rect是Rectangle(矩形)数据,定义椭圆的外界矩形格式2:publicvoidDrawEllipse(Penpen,intx,inty,intwidth,intheight);绘制由一个边框定义的椭圆实例:画椭圆privatevoidbutton1_Click(objectsender,EventArgse){Graphicsg=this.CreateGraphics();PenmyPen=newPen(Color.Blue,5);g.DrawEllipse(myPen,1,10,80,40);Rectanglerect=newRectangle(80,10,160,40);g.DrawEllipse(myPen,rect);}6.4.3绘制圆弧使用Graphics的DrawArc方法格式1:publicvoidDrawArc(Penpen,Rectanglerect,floatstartAngle,floatsweepAngle);绘制由rect指定矩形内接椭圆的一部分圆弧格式2:publicvoidDrawArc(Penpen,intx,inty,intwidth,intheight,intstartAngle,intsweepAngle);绘制一端弧线,该弧线是由一对坐标、宽度和高度指定的椭圆的一部分实例:画弧线privatevoidbutton1_Click(objectsender,EventArgse){Graphicsg=this.CreateGraphics();PenmyPen=newPen(Color.Blue,5);g.DrawArc(myPen,1,10,80,40,90,250);Rectanglerect=newRectangle(80,10,160,40);g.DrawArc(myPen,rect,0,90);}6.4.4画扇形使用Graphics的DrawPie方法可以绘制扇形,方法与DrawArc基本一致privatevoidbutton1_Click(objectsender,EventArgse){Graphicsg=this.CreateGraphics();PenmyPen=newPen(Color.Blue,5);g.DrawPie(myPen,1,10,80,40,90,250);Rectanglerect=newRectangle(80,10,160,40);g.DrawPie(myPen,rect,0,90);}6.4.5画矩形使用Graphics的DrawRectangle方法格式1:publicvoidDrawRectangle(Penpen,Rectanglerect);绘制一个矩形格式2:publicvoidDrawRectangle(Penpen,intx,inty,intwidth,intheight);绘制由一个边框定义的矩形实例:画矩形privatevoidbutton1_Click(objectsender,EventArgse){Graphicsg=this.CreateGraphics();PenmyPen=newPen(Color.Green,3);g.DrawRectangle(myPen,5,5,80,40);Rectanglerect=newRectangle(80,20,150,40);g.DrawRectangle(myPen,rect);}6.4.6画多边形使用Graphics的DrawPloygon方法格式1:publicvoidDrawPloygo
本文标题:第06章 GDI+与图形编程
链接地址:https://www.777doc.com/doc-3389412 .html