C#-GDI

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

VisualC#.NET程序设计教程第六章GDI+编程本章主要内容6.1GDI+与绘图命名空间6.2创建Graphics对象6.3Pen对象6.4Brush对象6.5Font对象6.6常用图形的绘制方法6.7典型实例6.1GDI+与绘图命名空间1、GDI+的基本概念GDI:即GraphicsDeviceInterface,图形设备接口初级的GDI绘图机制很复杂,首先获得一个显示设备环境(DC)、通过DC才能绘图、还要考虑显示模式、重绘等等。GDI+以图形图像作为对象,可在Windows窗体应用程序中以编程方式绘制或操作图形图像。总而言之,GDI+解决了GDI中的许多问题,可使用户更容易使用这些接口来绘制图形。2、GDI+的绘图命名空间所有的GDI+函数都保存在System.Drawing.dll程序集中,使用之前,必须添加相应的引用:“项目”、“添加引用”、“System.Drawing.dll”然后在程序中添加如下代码:usingSystem.Drawing.Drawing2D主要的绘图命名空间System.Drawing、System.Drawing.Text、System.Drawing.Printing、System.Drawing.Imaging、System.Drawing.Drawing2D、System.Drawing.Design6.2创建Graphics对象1、在GDI+的所有类中,Graphics类是核心,创建的Graphics对象相当于一张画布。可以调用绘图方法在其上画图。一般,图形设计过程分为两步:创建Graphics对象、使用Graphics对象的方法进行绘图。2、创建Graphics对象的方法一般有三种:A、利用窗体或控件的Paint事件的参数PaintEventArgsprivatevoidForm1_Paint(objectsender,System.Windows.Forms.PaintEventArgse){Graphicsg=e.Graphics;}B、(一般使用)使用窗体或控件的CreateGraphics方法,用于对象已经存在的情况下:Graphicsg;g=this.CreateGraphics();C、使用Image类的派生类创建Graphics对象,用于在C#中对图像进行处理的场合:Bitmapb=newBitmap(ddd.bmp);Graphicsg=Graphics.FromImage(b);6.3Pen对象Pen对象又称为画笔对象。用途:绘制线条、多边形、曲线等几何图形。Pen对象的主要属性:宽度、样式、颜色。1、Pen对象的创建(4种形式)Penp1=newPen(Color);//创建某一颜色的Pen对象Penp2=newPen(Brush);//创建某一刷子样式的Pen对象Penp3=newPen(Brush,float);//创建某一刷子样式并具有相应宽度的的Pen对象Penp4=newPen(Color,float);//创建某一颜色和相应宽度的Pen对象例在窗体上画一个椭圆:privatevoidbutton1_Click(objectsender,System.EventArgse){Graphicsg=this.CreateGraphics();Penp1=newPen(Color.Red);g.DrawEllipse(p1,20,30,10,50);//画椭圆}g.DrawLine(p1,1,1,400,6000);//画直线2、Pen对象的常用属性Alignment:设置Pen对象的对齐方式;Color:设置Pen对象的颜色Width:设置Pen对象的宽度DashStyle:设置Pen对象绘制的虚线样式,只能取6个值:Custom、Dash、DashDot、DashDotDot、Dot、SolidDashCap:指定虚线的两端风格,Flat、Round、TriagleStartCap:设置Pen对象绘制直线起点的帽样式EndCap:设置Pen对象的对象绘制直线终点的帽样式PenType:设置Pen对象对象绘制直线的样式使用举例:p1.Color=Color.Blue;p1.DashStyle=DashStyle.Solid;p1.DashCap=DashCap.Flat;6.4Brush对象(画刷)作用:一般用来填充图形。Brush类是一个抽象类,不能实例化,只能使用它的派生类:SolidBrush(单色画刷)(包含在命名空间System.Drawing中)、HatchBrush(阴影画刷)、LinearGradientBrush(颜色渐变画刷)、PathGradientBrush(使用路径及复杂的混色渐变画刷)、TextureBrush(纹理画刷)(后三个包含在命名空间System.Drawing.Drawing2D中)1、SolidBrush(单色画刷)使用格式:SolidBrushff=newSolidBrush(Color.Red);例6.1在窗体上绘制红色的椭圆Graphicsg=this.CreateGraphics();SolidBrushff=newSolidBrush(Color.Red);g.FillEllipse(ff,ClientRectangle);2、HatchBrush(阴影画刷)使用格式:A、HatchBrushff=newHatchBrush(HatchStyle,Color);//Color为前景颜色B、HatchBrushff=newHatchBrush(HatchStyle,Color,Color);//第一个Color为前景颜色,第二个为背景色其中HatchStyle取值固定,为阴影方式,如下图:注意:使用HatchBrush(阴影画刷)一定要添加相应的引用,并使用命名空间usingSystem.Drawing.Drawing2D;例6.2在窗体上绘制阴影的椭圆Graphicsg=this.CreateGraphics();HatchBrushff=newHatchBrush(HatchStyle.Cross,Color.Blue,Color.Red);g.FillEllipse(ff,ClientRectangle);3、LinearGradientBrush(颜色渐变画刷)常用的渐变效果由两个颜色逐渐变化而来。常用的使用格式:LinearGradientBrushff=newLinearGradientBrush(Point1,Point2,Color1,Color2);其中,Point1为渐变的起点,Point2为渐变的终点,Color1为渐变的起点颜色,Color2为渐变的终点颜色例6.3在窗体上绘制渐变颜色的椭圆Graphicsg=this.CreateGraphics();LinearGradientBrushff=newLinearGradientBrush(newPoint(0,20),newPoint(20,0),Color.Yellow,Color.Blue);g.FillEllipse(ff,ClientRectangle);6.5Font对象Font对象建立之后不能修改,如果需要不同的字体,只有建立新的Font对象。Font对象的常用属性如下:Bold、Italic、Regular、Strikeout、Underline等等。例6.4在窗体上显示文字Graphicsg=this.CreateGraphics();Fontfi=newFont(Tahoma,20,FontStyle.Bold|FontStyle.Italic);g.DrawString(GDI+编程世界,fi,newSolidBrush(Color.Blue),14,10);6.6常用图形的绘制方法1、画直线使用Graphics类的DrawLine方法,格式为:DrawLine(画笔,x1,y1,x2,y2)功能:在点(x1,y1),(x2,y2)之间画一条直线。例6.5画两条直线Graphicsg=this.CreateGraphics();//生成图形对象PenMypen=newPen(Color.Blue,5);//生成画笔,蓝色,5个像素g.DrawLine(Mypen,1,1,30,30);//画线Pointpt1=newPoint(1,30);//生成起点Pointpt2=newPoint(30,1);//生成终点g.DrawLine(Mypen,pt1,pt2);//画线2、画椭圆使用Graphics类的DrawEllipse方法,格式为:A、DrawEllipse(画笔,矩形结构数据)功能:绘制一个边界由矩形结构数据定义的椭圆。B、DrawEllipse(画笔,x,y,width,height)功能:绘制一个由边框定义的椭圆。例6.6画一个椭圆Graphicsg=this.CreateGraphics();//生成图形对象PenMypen=newPen(Color.Blue,5);//生成画笔,蓝色,5个像素g.DrawEllipse(Mypen,1,1,80,40);//画椭圆Rectanglerect=newRectangle(85,1,165,40);//生成矩形g.DrawEllipse(Mypen,rect);//画椭圆3、画圆弧使用Graphics类的DrawArc方法,格式为:A、DrawArc(画笔,矩形结构数据,实数,实数)功能:绘制由指定矩形的内接椭圆的一段圆弧。B、DrawArc(画笔,x,y,width,height,整数,整数)功能:绘制一段弧线,该弧线由一对坐标、宽度、高度指定椭圆的一段圆弧。例6.7画一段圆弧Graphicsg=this.CreateGraphics();//生成图形对象PenMypen=newPen(Color.Blue,5);//生成画笔,蓝色,5个像素g.DrawArc(Mypen,1,1,80,40,90,270);//画弧线Rectanglerect=newRectangle(85,1,165,40);//生成起点生成矩形结构g.DrawArc(Mypen,rect,0,90);//画弧线4、画扇形图使用Graphics类的DrawPie方法,格式与DrawArc基本相同例6.8画两个扇形Graphicsg=this.CreateGraphics();//生成图形对象PenMypen=newPen(Color.Blue,5);//生成画笔,蓝色,5个像素g.DrawPie(Mypen,1,1,80,40,90,270);//画扇形Rectanglerect=newRectangle(85,1,165,40);//生成矩形g.DrawPie(Mypen,rect,0,90);//画扇形5、画矩形使用Graphics类的DrawRectangle方法,格式为:A、DrawRectangle(画笔,矩形结构数据)功能:绘制一个边界由矩形结构数据定义的矩形。B、DrawRectangle(画笔,x,y,width,height)功能:绘制一个由左上角坐标、宽度、高度定义的矩形。例6.7画一个矩形Graphicsg=this.CreateGraphics();//生成图形对象PenMypen=newPen(Color.Blue,2);//生成画笔,蓝色,2个像素g.DrawRectangle(Mypen,5,5,80,40);//画矩形Rectanglerect=newRectangle(85,15,140,50);//生成矩形g.DrawRectangle(Mypen,rect);//画矩形6、画多边形使用Graphics类的DrawPolygon方法,格式为:A、DrawPolygon(画笔,Point[]points)功能:绘制由一组Point结构定义的多边形。B、DrawPolygon(画笔,PointF[]points)功能:绘制由

1 / 34
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功