-图形图像程序设计课件



《-图形图像程序设计课件》由会员分享,可在线阅读,更多相关《-图形图像程序设计课件(42页珍藏版)》请在装配图网上搜索。
1、单击此处编辑母版标题样式,编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,大家好,1,2,第,18,章 图形图像程序设计,本章将主要介绍,C#,中图形、图像绘制及处理的基本知识和技巧,使读者对,C#,中图形绘制及图像处理过程有一个大致的了解。,3,章节内容,18.1 GDI+,基础,18.2,基本图形的绘制,18.3,图像处理,18.4,小结,4,18.1.1 GDI+,概述,GDI+,(,Graphics Device Interface Plus,,图形设备接口)是一组通过,C+,类实现的应用
2、程序编程接口,为开发人员提供了一组与各种设备进行交互的,C+,类。,应用程序,GDI+,打印机,显示器,文件,5,18.1.1 GDI+,概述,GDI+,是微软推出的新一代二维图形系统,是,Windows XP,和,Windows Server 2003,操作系统自带的图形接口。,GDI,是,Windows,操作系统早期版本的图形接口。与,GDI,相比,,GDI+,的性能更优化,并添加了许多新的功能。目前,GDI+,已完全替代,GDI,,是在,Windows,窗口应用程序中以编程方式呈现图形的唯一一方法。,6,18.1.1 GDI+,概述,GDI+,按功能划分,可分为,3,类:,(,1,)二维
3、矢量图形绘制:使用,GDI+,绘制矢量线条和形状。,GDI+,提供了用于存储矢量图形信息的类,如,Pen,类,以及存储矢量图形绘制信息的类和实际绘制图形的类,如,Graphics,类。,(,2,)图像处理:,GDI+,提供了,Bitmap,、,Image,等类用于显示、操作和保存,BMP,、,JPG,、,GIF,等格式的图像。,(,3,)文字显示:使用,GDI+,显示各种字体、字号和样式的文本。,7,常用结构体和类,Point,类:,二维表面上的一个点,,Point p=new Point(1,1),Size,类:,表示一个尺寸,包含宽度和高度,,Size s=new Size(5,4),,公
4、共属性,Height,和,Width,可以获得和设置,Size,的高度和宽度。,Rectangle,类:两种构造函数,参数如下,X,坐标,,y,坐标,宽度,高度,Point,结构和,Size,结构,8,GraphicsPath,类:,表示一系列连接的线条和曲线,在构造路径时,首先使用,AddLine,或,AddRectangle,等方法添加线条、曲线、矩形等,然后使用,Graphics,对象的,DrawPath,方法绘制路径或调用,FillPath,方法填充路径。(例,18-1,),Color,类:,使用系统预定义颜色,,Color myColor=Color.Red;,使用,FromArgb
5、,方法指定任意颜色,两种方法,Color myColor=Color.FromArgb(255,0,0);,Color myColor=Color.FromArgb(255,0,0,1);,9,18.1.2 Graphics,类,Graphics,类是所有绘图的基础,绘图之前都需要先创建,Graphics,对象,相当于在窗体中创建了一块画布,然后使用,GDI+,绘制线条和形状、呈现文本或显示与操作图像。,1,创建,Graphics,对象,,3,种方法:,(,1,)利用窗体或控件的,Paint,事件中的,PaintEventArgs,方法:为窗体或控件编写,Paint,事件时,,Graphics
6、,对象可以通过,Paint,事件中的,PaintEventArgs,方法来获取。,private void Form1_Paint(object,sender,System.Windows.Forms.PaintEventArgs e),Graphics,g=e.Graphics;,10,18.1.2 Graphics,类,(,2,)利用窗体或某个控件的,CreateGraphics,方法:当要在某窗体或控件上显示图形时,可利用某窗体或控件的,CreateGraphics,方法,获取对,Graphics,对象的引用。,Graphics,g=this.CreateGraphics();,Grap
7、hics,g1=button1.CreateGraphics();,/,其中,,this,代表某窗体,,button1,代表,Button,按钮控件。,(,3,)由,Image,类派生的任意对象创建图形对象:当需要更改某个已经存在的图像时,可利用,Image,类派生的任意对象创建图形对象。,Graphics,对象。,Bitmap,mybitmap=new Bitmap(1.jpg);,Graphics g=Graphics.FromImage(mybitmap);,注意,,Graphics,对象使用完后,应当及时释放掉,否则会占用内存资源。,g.Dispose(),11,18.1.2 Grap
8、hics,类,2,Graphics,对象的方法,方法,说明,Clear,清除整个绘图面并以指定背景色填充,DrawArc,绘制一段弧线,它表示由一对坐标、宽度和高度指定的椭圆部分,DrawEllipse,绘制一个由边框定义的椭圆,DrawIcon,在指定坐标处绘制由指定的,Icon,对象表示的图像,DrawIconUnstretched,绘制指定的,Icon,对象表示的图像,而不缩放该图像,DrawImage,在指定位置并且按原始大小绘制指定的,Image,对象,DrawImageUnscaled,在坐标对所指定的位置并且按其原始大小绘制指定的,Image,对象,DrawLine,绘制一条连接
9、由坐标对指定的两个点的线段,12,DrawLines,绘制一系列连接一组,Point,结构的线段,DrawPie,绘制一个扇形,DrawPolygon,绘制由一组,Point,结构定义的多边形,DrawRectangle,绘制由坐标对、宽度和高度指定的矩形,DrawRectangles,绘制一系列由,Rectangle,结构指定的矩形,DrawString,在指定位置绘制指定的文本字符串,FillEllipse,填充边框所定义的椭圆的内部,FillPie,填充指定的椭圆所定义的扇形区的内部,FillPolygon,填充,Point,结构指定的点数组所定义的多边形的内部,FillRectangl
10、e,填充由一对坐标、一个宽度和一个高度指定的矩形的内部,FillPath,填充,GraphicsPath,的内部,18.1.2 Graphics,类,13,下列代码演示,Graphics,对象的应用,private void Form1_Paint(object sender,PaintEventArgs e),Graphics g=e.Graphics;,g.Clear(Color.FromArgb(244,23,34);,g.Dispose();,private void button1_Click(object sender,EventArgs e),Graphics a=button1
11、.CreateGraphics();,a.Clear(Color.Red);,g.Dispose();,例:,18-1-2,18.1.2 Graphics,类,14,18.1.3,画笔对象的使用,Graphics,类对象相当于画布,而画笔就相当于绘图的笔,常用,Pen,类来创建画笔对象绘制线、图形边缘,,Brush,类来填充图形或一个封闭区域。,Pen,类的常用属性为宽度、颜色和样式。宽度属性用于确定线条的宽度,以像素为单位;颜色属性用于确定线条的颜色;样式属性用于确定所绘制线条的线型,通常有实线(,Solid,)、虚线(,Dash,)、点线(,Dot,)、点划线(,DashDot,)、双点划
12、线(,DashDotDot,)等。另外,在,C#,中还可以通过属性设置画笔起点和终点的样式,通常在起点或终点加上箭头。,15,18.1.3,画笔对象的使用,1,创建画笔对象,常用的,Pen,类构造函数为:,public Pen(Color color),public Pen(Color color,,,float width),例如:,Pen p=new Pen(Color.Red);,注意,,Pen,对象使用完毕后,应当被及时释放掉,否则会占据内存资源。,16,18.1.3,画笔对象的使用,2,画笔对象的属性,。,可通过设置画笔的属性值来使用画笔。,名称,说明,Color,设置画笔对象的颜色
13、,Width,设置画笔的宽度,EndCap,获取画笔绘制的直线终点的样式,StartCap,设置画笔绘制的直线起点的样式,DashStyle,设置画笔绘制的虚线的线型,17,18.1.3,画笔对象的使用,下列代码演示,Pen,对象的应用。,Graphics a=this.CreateGraphics();,a.Clear(Color.Red);,Pen p=new Pen(Color.Blue,5);,p.DashStyle=DashStyle.DashDot;,p.EndCap=LineCap.ArrowAnchor;,a.DrawLine(p,10,30,200,30);,p.Dispos
14、e();,a.Dispose();,例:,18-1-3,18,18.1.4,画刷对象的使用,画刷的功能与刷子类似,用于填充图形的内部。,C#,中代表画刷的类是,Brush,类,该类为抽象类,它不能被实例化。若要创建一个画刷对象,必须使用从,Brush,派生出的类来创建画刷对象。常用画刷派生类如下,:,SolidBrush,类:单色画刷。,HatchBrush,类:阴影画刷。,TextureBrush,类:纹理(图像)画刷。,GradientBrush,类:渐变画刷。,注意,,Brush,对象使用完后,应当及时释放掉,否则会占用内存资源。,19,单色画刷,功能:向某一特定区域内填充指定的颜色,构
15、造函数,Public SolidBrush(Color.Color);,例如:,18-1-4,20,阴影画刷,有两种颜色(前景色和背景色),以及多种样式,可通过属性进行设置。,Public HatchBrush(HatchStyle,Color foreColor),Public HatchBrush(HatchStyle,Color foreColor,Color backColor),foreColor,定义线条的颜色,,backColor,定义区域背景的颜色。,例:,18-1-5,21,纹理画刷,使用某种纹理,如图像,对图形的纹理进行修饰。,Public TextureBrush(Ima
16、ge bitmap);,例:,18-1-6,22,渐变画刷,用于在某个特定区域内生成渐变效果。,LinearGradientBrush,可以显示线性渐变效果,PathGradientBrush,为路径渐变,可以显示具有弹性的渐变效果。,例:,18-2,23,18.1.5 Bitmap,类,1,创建,Bitmap,对象,Bitmap,类的构造函数有多种重载形式,分别如下。,(,1,)从指定的现有图像建立,Bitmap,对象。,Bitmap bitmap1=new Bitmap(pictureBox1.Image);,(,2,)从指定的图像文件建立,Bitmap,对象。,Bitmap bitmap2=new Bitmap(“D:picturepicture.bmp”);,(,3,)从现有的,Bitmap,对象建立新的,Bitmap,对象,例如下列代码。,Bitmap bitmap3=new Bitmap(bitmap1);,另外,,Bitmap,类相当于一个图形容器,里面装载的对象即为图像,因,此在编程时可以把,Bitmap,类的对象看作是一个图像,.,pictureBox1.Image=
- 温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。