首页 C#_GDI

C#_GDI

举报
开通vip

C#_GDInullVisual C#.NET 程序设计教程Visual C#.NET 程序设计教程第六章 GDI+编程本章主要内容本章主要内容6.1 GDI+与绘图命名空间 6.2 创建Graphics对象 6.3 Pen对象 6.4 Brush对象 6.5 Font对象 6.6 常用图形的绘制方法 6.7 典型实例 6.1 GDI+与绘图命名空间6.1 GDI+与绘图命名空间1、GDI+的基本概念 GDI:即Graphics Device Interface,图形设备接口 初级的GDI绘图机制很复杂...

C#_GDI
nullVisual C#.NET 程序设计 教程 人力资源管理pdf成真迷上我教程下载西门子数控教程protel99se入门教程fi6130z安装使用教程 Visual C#.NET 程序设计教程第六章 GDI+编程本章主要内容本章主要内容6.1 GDI+与绘图命名空间 6.2 创建Graphics对象 6.3 Pen对象 6.4 Brush对象 6.5 Font对象 6.6 常用图形的绘制方法 6.7 典型实例 6.1 GDI+与绘图命名空间6.1 GDI+与绘图命名空间1、GDI+的基本概念 GDI:即Graphics Device Interface,图形设备接口 初级的GDI绘图机制很复杂,首先获得一个显示设备环境(DC)、通过DC才能绘图、还要考虑显示模式、重绘等等。 GDI+以图形图像作为对象,可在Windows窗体应用程序中以编程方式绘制或操作图形图像。 总而言之, GDI+ 解决了GDI中的许多问题,可使用户更容易使用这些接口来绘制图形。null2、 GDI+的绘图命名空间 所有的GDI+ 函数都保存在System.Drawing.dll程序集中, 使用之前,必须添加相应的引用: “项目”、“添加引用”、“System.Drawing.dll” 然后在程序中添加如下代码: using System.Drawing.Drawing2D 主要的绘图命名空间 System.Drawing、 System.Drawing.Text、 System.Drawing.Printing、 System.Drawing.Imaging、 System.Drawing.Drawing2D、 System.Drawing.Design6.2 创建Graphics对象6.2 创建Graphics对象1、在GDI+的所有类中,Graphics类是核心,创建的Graphics对象相当于一张画布。可以调用绘图方法在其上画图。 一般,图形设计过程分为两步:创建Graphics对象、使用Graphics对象的方法进行绘图。 2、创建Graphics对象的方法一般有三种: A、利用窗体或控件的Paint事件的参数PaintEventArgs private void Form1_Paint(object sender, System.Windows.Forms.PaintEventArgs e) { Graphics g=e.Graphics; }nullB、(一般使用)使用窗体或控件的CreateGraphics方法,用于对象已经存在的情况下: Graphics g; g=this.CreateGraphics(); C、使用Image类的派生类创建Graphics对象,用于在C#中对图像进行处理的场合: Bitmap b=new Bitmap("ddd.bmp"); Graphics g=Graphics.FromImage(b);6.3 Pen对象6.3 Pen对象Pen 对象又称为画笔对象。 用途:绘制线条、多边形、曲线等几何图形。 Pen 对象的主要属性:宽度、样式、颜色。 1、 Pen 对象的创建(4种形式) Pen p1=new Pen(Color);//创建某一颜色的Pen 对象 Pen p2=new Pen(Brush);//创建某一刷子样式的Pen 对象 Pen p3=new Pen(Brush,float);//创建某一刷子样式并具有相应宽度的的Pen 对象 Pen p4=new Pen(Color,float);//创建某一颜色和相应宽度的Pen 对象null例 在窗体上画一个椭圆: private void button1_Click(object sender, System.EventArgs e) { Graphics g=this.CreateGraphics(); Pen p1=new Pen(Color.Red); g.DrawEllipse(p1,20,30,10,50);//画椭圆 } g.DrawLine(p1,1,1,400,6000);//画直线2、Pen对象的常用属性2、Pen对象的常用属性Alignment:设置Pen对象的对齐方式; Color :设置Pen对象的颜色 Width :设置Pen对象的宽度 DashStyle :设置Pen对象绘制的虚线样式,只能取6个值:Custom、Dash、DashDot、DashDotDot、Dot、Solid DashCap :指定虚线的两端风格,Flat、Round、Triagle StartCap :设置Pen对象绘制直线起点的帽样式 EndCap :设置Pen对象的对象绘制直线终点的帽样式 PenType :设置Pen对象对象绘制直线的样式 使用举例:p1.Color=Color.Blue; p1.DashStyle=DashStyle.Solid; p1.DashCap=DashCap.Flat;6.4 Brush对象(画刷)6.4 Brush对象(画刷)作用:一般用来填充图形。 Brush类是一个抽象类,不能实例化,只能使用它的派生类: SolidBrush(单色画刷) (包含在命名空间System.Drawing中)、 HatchBrush(阴影画刷)、 LinearGradientBrush(颜色渐变画刷)、 PathGradientBrush(使用路径及复杂的混色渐变画刷)、 TextureBrush(纹理画刷) (后三个包含在命名空间System.Drawing. Drawing2D中)null1、SolidBrush(单色画刷) 使用格式:SolidBrush ff=new SolidBrush(Color.Red); 例6.1 在窗体上绘制红色的椭圆 Graphics g=this.CreateGraphics(); SolidBrush ff=new SolidBrush(Color.Red); g.FillEllipse(ff,ClientRectangle);null2、HatchBrush(阴影画刷) 使用格式: A、HatchBrush ff=new HatchBrush(HatchStyle,Color);//Color为前景颜色 B、HatchBrush ff=new HatchBrush(HatchStyle,Color, Color);//第一个Color为前景颜色,第二个为背景色 其中HatchStyle取值固定,为阴影方式,如下图: 注意:使用HatchBrush(阴影画刷)一定要添加相应的引用,并使用命名空间using System.Drawing.Drawing2D;null例6.2 在窗体上绘制阴影的椭圆 Graphics g=this.CreateGraphics(); HatchBrush ff=new HatchBrush(HatchStyle.Cross,Color.Blue,Color.Red); g.FillEllipse(ff,ClientRectangle);null3、LinearGradientBrush(颜色渐变画刷) 常用的渐变效果由两个颜色逐渐变化而来。 常用的使用格式: LinearGradientBrush ff=new LinearGradientBrush(Point1, Point2,Color1,Color2); 其中,Point1为渐变的起点,Point2为渐变的终点,Color1为渐变的起点颜色,Color2为渐变的终点颜色 例6.3 在窗体上绘制渐变颜色的椭圆 Graphics g=this.CreateGraphics(); LinearGradientBrush ff=new LinearGradientBrush(new Point(0,20),new Point(20,0),Color.Yellow,Color.Blue); g.FillEllipse(ff,ClientRectangle);6.5 Font对象6.5 Font对象Font对象建立之后不能修改,如果需要不同的字体,只有建立新的 Font对象。 Font对象的常用属性如下:Bold、Italic、Regular、Strikeout、Underline等等。 例6.4 在窗体上显示文字 Graphics g=this.CreateGraphics(); Font fi=new Font("Tahoma",20,FontStyle.Bold|FontStyle.Italic); g.DrawString("GDI+编程世界",fi,new SolidBrush(Color.Blue),14,10);6.6 常用图形的绘制方法6.6 常用图形的绘制方法1、画直线 使用Graphics类的DrawLine方法,格式为: DrawLine(画笔,x1,y1,x2,y2) 功能:在点(x1,y1),(x2,y2)之间画一条直线。 例6.5 画两条直线 Graphics g=this.CreateGraphics();//生成图形对象 Pen Mypen=new Pen(Color.Blue ,5);//生成画笔,蓝色,5个像素 g.DrawLine(Mypen,1,1,30,30);//画线 Point pt1=new Point(1,30);//生成起点 Point pt2=new Point(30,1);//生成终点 g.DrawLine(Mypen,pt1,pt2);//画线null2、画椭圆 使用Graphics类的DrawEllipse方法,格式为: A、DrawEllipse (画笔,矩形结构数据) 功能:绘制一个边界由矩形结构数据定义的椭圆。 B、DrawEllipse (画笔,x,y,width,height) 功能:绘制一个由边框定义的椭圆。 例6.6 画一个椭圆 Graphics g=this.CreateGraphics();//生成图形对象 Pen Mypen=new Pen(Color.Blue ,5);//生成画笔,蓝色,5个像素 g.DrawEllipse(Mypen,1,1,80,40);//画椭圆 Rectangle rect=new Rectangle(85,1,165,40);//生成矩形 g.DrawEllipse (Mypen,rect);//画椭圆null3、画圆弧 使用Graphics类的DrawArc方法,格式为: A、DrawArc (画笔,矩形结构数据,实数,实数) 功能:绘制由指定矩形的内接椭圆的一段圆弧。 B、DrawArc (画笔,x,y,width,height,整数,整数) 功能:绘制一段弧线,该弧线由一对坐标、宽度、高度指定椭圆的一段圆弧。 例6.7 画一段圆弧 Graphics g=this.CreateGraphics();//生成图形对象 Pen Mypen=new Pen(Color.Blue ,5);//生成画笔,蓝色,5个像素 g.DrawArc(Mypen,1,1,80,40,90,270);//画弧线 Rectangle rect=new Rectangle(85,1,165,40);//生成起点 生成矩形结构 g.DrawArc (Mypen,rect,0,90);//画弧线null4、画扇形图 使用Graphics类的DrawPie方法,格式与DrawArc基本相同 例6.8 画两个扇形 Graphics g=this.CreateGraphics();//生成图形对象 Pen Mypen=new Pen(Color.Blue ,5);//生成画笔,蓝色,5个像素 g.DrawPie(Mypen,1,1,80,40,90,270);//画扇形 Rectangle rect=new Rectangle(85,1,165,40);//生成矩形 g.DrawPie (Mypen,rect,0,90);//画扇形null5、画矩形 使用Graphics类的DrawRectangle方法,格式为: A、DrawRectangle (画笔,矩形结构数据) 功能:绘制一个边界由矩形结构数据定义的矩形。 B、DrawRectangle (画笔,x,y,width,height) 功能:绘制一个由左上角坐标、宽度、高度定义的矩形。 例6.7 画一个矩形 Graphics g=this.CreateGraphics();//生成图形对象 Pen Mypen=new Pen(Color.Blue ,2);//生成画笔,蓝色,2个像素 g.DrawRectangle (Mypen,5,5,80,40);//画矩形 Rectangle rect=new Rectangle(85,15,140,50);//生成矩形 g.DrawRectangle (Mypen,rect);//画矩形null6、画多边形 使用Graphics类的DrawPolygon方法,格式为: A、DrawPolygon (画笔,Point[] points) 功能:绘制由一组Point结构定义的多边形。 B、DrawPolygon (画笔,PointF[] points) 功能:绘制由一组PointF结构定义的多边形 Point 结构只能取整数,PointF可以取实数null例6.8 画一个多边形 Pen blackPen = new Pen(Color.Black, 3);//生成画笔; Graphics g=this.CreateGraphics();//生成图形对象 Point point1 = new Point( 50, 50);//生成5个点 Point point2 = new Point(70, 25);Point point3 = new Point(100, 30); Point point4 = new Point(120, 85);Point point5 = new Point(80, 100); Point[] curvePoints ={point1,point2,point3,point4,point5}; //定义Point结构的数组 g.DrawPolygon(blackPen, curvePoints);//绘制多边形null7、绘制闭合曲线 使用Graphics类的DrawClosedCurve方法,格式为: A、 DrawClosedCurve (画笔,Point[] points) 功能:绘制由一组Point结构定义的闭合曲线。默认张力为0.5 B、 DrawClosedCurve (画笔,Point[] points,float s,FillMode F) 功能:使用指定的张力绘制由一组Point结构定义的闭合基数样条 s为指定曲线的张力,F为填充曲线的方式null例6.9 绘制一个闭合曲线 Graphics g=this.CreateGraphics(); Pen p=new Pen(Color.Black,3); Point p1=new Point(50,50); Point p2=new Point(70,25); Point p3=new Point(100,30); Point p4=new Point(120,85); Point p5=new Point(80,100); Point[] ps={p1,p2,p3,p4,p5}; g.DrawClosedCurve(p,ps,0.9F,FillMode.Alternate); null8、绘制非闭合曲线 使用Graphics类的DrawCurve方法,格式为: A、 DrawClosedCurve (画笔,Point[] points) 功能:绘制由一组Point结构定义的非闭合曲线。默认张力为0.5 B、 DrawClosedCurve (画笔,Point[] points,float s,FillMode F) 功能:使用指定的张力绘制由一组Point结构定义的非闭合基数样条 s为指定曲线的张力,F为填充曲线的方式 null9、填充椭圆 使用Graphics类的FillEllipse方法,格式为: A、 FillEllipse(Brush F,矩形结构数据) 功能:填充边界由矩形结构数据定义的椭圆。 B、 FillEllipse(Brush F,x,y,width,height) 功能:填充一个由边框(坐标、宽度、高度)定义的椭圆。null例6.10 填充一个椭圆 Graphics g=this.CreateGraphics();//生成图形对象 SolidBrush BlueBrush = new SolidBrush(Color.Blue);//生成填充用的画刷 int x = 0;//定义外接矩形的左上角坐标和高度及宽度 int y = 0; int width = 200; int height = 100; Rectangle rect = new Rectangle( x, y, width, height);//定义矩形 g.FillEllipse(BlueBrush,rect);//填充椭圆null10、填充矩形 使用Graphics类的FillRectangle方法,格式为: A、 FillRectangle(Brush F,矩形结构数据) 功能:用指定的画刷填充一个矩形。 B、 FillRectangle (Brush F,x,y,width,height) 功能:填充一个由边框(坐标、宽度、高度)定义的矩形。null例6.11 填充一个矩形 Graphics g=this.CreateGraphics();//生成图形对象 SolidBrush BlueBrush = new SolidBrush(Color.Blue);//生成填充用的画刷 int x = 15;//定义外接矩形的左上角坐标和高度及宽度 int y = 15; int width = 200; int height = 100; Rectangle rect = new Rectangle( x, y, width, height);//定义矩形 g.FillRectangle(BlueBrush,rect);//填充矩形null11、填充饼形图 使用Graphics类的FillPie方法,格式为: A、 FillPie(Brush F,矩形结构数据,float s,float sw) 功能:用指定的画刷填充椭圆所定义的扇形区的内部,该扇形区由矩形结构数据和两条射线指定. s为从x轴到弧线起点沿顺时针方向度量的角, sw为从x参数到弧线的结束点沿顺时针方向度量的角. B、 FillRectangle (Brush F,x,y,width,height, float s,float sw) 功能:填充一个由边框(坐标、宽度、高度)及两条射线所指定的椭圆所定义的扇形区的内部null例6.12 填充一个饼形图 Graphics g=this.CreateGraphics(); SolidBrush bl=new SolidBrush(Color.Blue); g.FillPie(bl,1,1,80,40,90,270); Rectangle rect=new Rectangle(85,1,165,40); g.FillPie(bl,rect,0,90);6.7 典型实例6.7 典型实例实例1 利用鼠标画图 编写一个利用鼠标在窗体上画图的程序,无论何时用户按下并拖动鼠标均会画出一条线。 实现方法;使用MouseDown(开始画图)、MouseUp(结束画图)、MouseMove(执行画图)null可擦写图形轮廓的实现 编写一个画一系列椭圆的程序, 当按下并拖动鼠标时,将出现一个椭圆轮廓,该椭圆轮廓表示所画椭圆的大小.当松开鼠标时,将在窗体上绘制出用兰色填充的椭圆.课堂练习作业作业1、复习第六章 2、上机实践本次课的例题 3、作业 P307 1、2、3、4、5 4、实验1
本文档为【C#_GDI】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_074746
暂无简介~
格式:ppt
大小:313KB
软件:PowerPoint
页数:0
分类:互联网
上传时间:2012-12-26
浏览量:26