C sharp图形图像编程基础

上传人:无*** 文档编号:244659264 上传时间:2024-10-05 格式:PPT 页数:36 大小:99KB
返回 下载 相关 举报
C sharp图形图像编程基础_第1页
第1页 / 共36页
C sharp图形图像编程基础_第2页
第2页 / 共36页
C sharp图形图像编程基础_第3页
第3页 / 共36页
点击查看更多>>
资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,gggg,第三级,第四级,第五级,第,7,章,C#,图形图像编程基础,本章主要介绍使用,C#,进行图形图像编程基础,其中包括,GDI+,绘图基础、,C#,图像处理基础以及简单的图像处理技术。,7.1 GDI+,绘图基础,7.2 C#,图像处理基础,7.1 GDI+,绘图基础,编写图形程序时需要使用,GDI,(,Graphics Device Interface,,,图形设备接口),从程序设计的角度看,,GDI,包括两部分:一部分是,GDI,对象,另一部分是,GDI,函数。,GDI,对象定义了,GDI,函数使用的工具和环境变量,而,GDI,函数使用,GDI,对象绘制各种图形,在,C#,中,进行图形程序编写时用到的是,GDI+,(,Graphics Device Interface Plus,),版本,,GDI+,是,GDI,的进一步扩展,它使编程更加方便。,7.1.1 GDI+,概述,GDI+,是微软在,Windows 2000,以后操作系统中提供的新的图形设备接口,其通过一套部署为托管代码的类来展现,这套类被称为,GDI+,的“托管类接口”,,GDI+,主要提供了以下三类服务,:,(1),二维矢量图形:,GDI+,提供了存储图形基元自身信息的类,(,或结构体,),、存储图形基元绘制方式信息的类以及实际进行绘制的类。,(2),图像处理:,大多数图片都难以划定为直线和曲线的集合,无法使用二维矢量图形方式进行处理。因此,,GDI+,为我们提供了,Bitmap,、,Image,等类,它们可用于显示、操作和保存,BMP,、,JPG,、,GIF,等图像格式。,(3),文字显示:,GDI+,支持使用各种字体、字号和样式来显示文本。,7.1.2,Graphics,类,Graphics,类,封装了一个,GDI+,绘图图面,提供将对象绘制到显示到设备的方法。,绘图程序的一般步骤:,(,1,)创建,Graphics,对象,(,2,)使用,Graphics,对象的方法绘图、显示文本或处理图像。,通常用三种方法创建,Graphics,对象:,方法一,/,窗体的,Paint,事件的响应方法,private void form1_Paint(object sender,PaintEventArgs,e),Graphics g=e.Graphics;,也可以重载窗体的,OnPaint,方法,protected override void,OnPaint(PaintEventArgs,e),Graphics g=,e.Graphics,;,方法二,调用控件或窗体的,CreateGraphics,方法。,例如:,Graphics g=,this.,CreateGraphics,(),;,注意:,此时以,this,所,代表的窗体为画布,也可以使用其他控件对象的引用,创建以控件对象为画布的,Graphics,对象。,方法三,/,建立,Image,对象,,名,为“,g1.jpg”,的图片位于当前路径下,Image,img,=Image.FromFile(,g1.jpg,);,/,创建,Graphics,对象,Graphics g=,Graphics.FromImage(img,);,注意:,此时以文件,“,g1.jpg”,为画布,使用,g,进行绘制图形时,其图形是绘制在文件,“,g1.jpg”,上的。,在创建了,Graphics,对象后,就可以用它开始绘图了,可以画线、填充图形、显示文本等等,其中主要用到的对象还有:,Pen,:,定义用于绘制直线和曲线的对象。,Color,:,表示,ARGB,颜色。,Font,:,定义特定的文本格式,包括字体、字号和字形属性。,Brush,:,定义用于填充图形形状(如矩形、椭圆、饼形、多边形和封闭路径)的内部的对象。,Rectangle,:,存储一组整数,共四个,表示一个矩形的位置和大小。,Point,:,表示在二维平面中定义点的、整数,X,和,Y,坐标的有序对,。,注意,:各个对象的构造函数。,7.1.3,常用画图对象,Color,对象,在自然界中,颜色大都由透明度(,A,),和三基色(,R,G,B,),所组成。在,GDI+,中,通过,Color,结构封装对颜色的定义,,Color,结构中,除了提供(,A,R,G,B,),以外,还提供许多系统定义的颜色,如,Pink,(,粉颜色),另外,还提供许多静态成员,用于对颜色进行操作。,Color red=Color.FromArgb(255,0,0);,Color red=Color.FromArgb(120,255,0,0);,1,画一个矩形,protected override void,OnPaint(PaintEventArgs,e),Graphics g=,e.Graphics,;,Rectangle,rect,=new Rectangle(50,30,100,100);,LinearGradientBrush,lBrush,=new,LinearGradientBrush(rect,Color.Red,Color.Yellow,LinearGradientMode.BackwardDiagonal,);,g.FillRectangle(lBrush,rect,);,7.1.4,基本图形绘制举例,2,画一个弧,protected override void,OnPaint(PaintEventArgs,e),Graphics g=,e.Graphics,;,Pen,pn,=new,Pen(Color.Blue,);,Rectangle,rect,=new Rectangle(0,0,100,100);,g.DrawArc(pn,rect,12,84);,7.1.4,基本图形绘制举例,3,画线,protected override void,OnPaint(PaintEventArgs,e),Graphics g=,e.Graphics,;,Pen,pn,=new,Pen(Color.Blue,);,Point pt1=new Point(30,30);,Point pt2=new Point(110,100);,g.DrawLine(pn,pt1,pt2);,7.1.4,基本图形绘制举例,4,画椭圆,protected override void,OnPaint(PaintEventArgs,e),Graphics g=,e.Graphics,;,Pen,pn,=new Pen(Color.Blue,1);,Rectangle,rect,=new Rectangle(30,30,100,50);,g.DrawEllipse(pn,rect,);,7.1.4,基本图形绘制举例,5,输出文本,protected override void,OnPaint(PaintEventArgs,e),Font,fnt,=new Font(Verdana,16);,Graphics g=,e.Graphics,;,Pen,pn,=new Pen(Color.Blue,1);,g.DrawString(GDI+World,fnt,new,SolidBrush(Color.Red),50,50);,7.1.4,基本图形绘制举例,6,填充路径,protected override void,OnPaint(PaintEventArgs,e),Graphics g=,e.Graphics,;,g.FillRectangle(new,SolidBrush(Color.White),ClientRectangle,);,GraphicsPath,path=new,GraphicsPath(new,Pointnew,Point(40,40),new Point(275,100),new Point(105,125),new Point(190,200),new Point(50,250),new Point(20,80),7.1.4,基本图形绘制举例,new byte,(,byte)PathPointType.Start,(byte)PathPointType.Bezier,(byte)PathPointType.Bezier,(byte)PathPointType.Bezier,(byte)PathPointType.Line,(byte)PathPointType.Line,);,PathGradientBrush,pgb,=new,PathGradientBrush(path,);,pgb.SurroundColors,=new Color,Color.Green,Color.Yellow,Color.Red,Color.Blue,Color.Orange,Color.White,;,g.FillPath(pgb,path,);,7.1.4,基本图形绘制举例,7.1.5,画刷和画刷类型,Brush,类型是一个抽象类,所以它不能被实例化,也就是不能直接应用,但是我们可以利用它的派生类,如:,HatchBrush,、,SolidBrush,和,TextureBrush,等。画刷类型一般在,System.Drawing,命名空间中,如果应用,HatchBrush,和,GradientBrush,画刷,需要在程序中引入,System.Drawing.Drawing2D,命名空间。,画刷和画刷应用举例,1,SolidBrush,(,单色画刷),protected override void,OnPaint(PaintEventArgs,e),Graphics g=,e.Graphics,;,SolidBrush,sdBrush1=new,SolidBrush(Color.Red,);,SolidBrush,sdBrush2=new,SolidBrush(Color.Green,);,SolidBrush,sdBrush3=new,SolidBrush(Color.Blue,);,g.FillEllipse(sdBrush2,20,40,60,70);/填充一个椭圆的内部,Rectangle,rect,=new Rectangle(0,0,200,100);,g.FillPie(sdBrush3,0,0,200,40,0.0f,30.0f);/填充扇形区域,画刷和画刷应用举例,PointF,point1=new PointF(50.0f,150.0f);,PointF,point2=new PointF(100.0f,25.0f);,PointF,point3=new PointF(150.0f,40.0f);,PointF,point4=new PointF(250.0f,50.0f);,PointF,point5=new PointF(200.0f,100.0f);,PointF,curvePoints,=point1,point2,point3,point4,point5;,g.FillPolygon(sdBrush1,curvePoints);/填充多边形,画刷和画刷应用举例,2,HatchBrush,(,阴影画刷),protected override void,OnPaint(PaintEventArgs,e),Graphics g=,e.Graphics,;,HatchBrush,hBrush1=new,HatchBrush(HatchStyle.DiagonalCross,Color.Chocolate,Color.Lime,);,g.FillEllipse(hBrush1,20,20,150,150);,画刷和画刷应用举例,3,TextureBrush,(,纹理画刷),private void Form1_Paint(object sender,PaintEventArgs e),Graphics g=e.Graphic
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 管理文书 > 施工组织


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


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