图形图像处理基础.pptx

上传人:莉*** 文档编号:72456516 上传时间:2023-02-11 格式:PPTX 页数:47 大小:879.77KB
返回 下载 相关 举报
图形图像处理基础.pptx_第1页
第1页 / 共47页
图形图像处理基础.pptx_第2页
第2页 / 共47页
点击查看更多>>
资源描述

《图形图像处理基础.pptx》由会员分享,可在线阅读,更多相关《图形图像处理基础.pptx(47页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、1、GDI+绘图基础绘图基础1.1 图形设备接口(GDI+)GDI+(Graphics Device Interface Plus)是.NET中实现图形、图像及文字处理的API;所有的API都包含在以下名词空间里:System.DrawingSystem.Drawing.Drawing2DSystem.Drawing.ImagingSystem.Drawing.Text第1页/共47页坐标系统第2页/共47页1.2 图形上下文和Graphics对象C#中的“图形上下文”是屏幕上可绘制图形的区域,Graphics对象管理“图形上下文”;Graphlics对象包括了绘图、字体处理、颜色处理等各种图

2、形处理的方法,我们进行图形绘制,第一步就必须创建或获得一个Graphics对象;第3页/共47页1.3 颜色处理在.NET中,使用Color结构来定义操纵色彩的方法和常量;在.NET中,任何颜色都可以通过alpha、红、绿、蓝四个数来表示,这种表示法称为ARGB值,alpha代表颜色的透明度,这四个数的取值都是从0255;要使用ARGB来设定颜色,需要使用Color的静态方法FromArgb来返回一个Color对象,如:Color mycolor=Color.FromArgb(0,0,0,0);此外,Color还预定义了一些Color常量,我们可以直接使用,如:Color.RedColor.B

3、lack第4页/共47页1.4 图形程序的设计的一般方法一般而言,图形程序的设计可分为以下步骤:1、创建或者获取Graphics对象;2、创建画图工具对象(如画笔、画刷对象);3、调用Graphics对象的方法进行图形绘制。第5页/共47页2、创建画布(、创建画布(Graphics对象)对象)用GDI+创建图形需要先创建一个Graphics对象,Graphics类是GDI+的核心;创建Graphics对象类似于建立了一块画布,有了画布,才可以调用其画图方法进行绘图;第6页/共47页在图形程序设计中,通常使用下述两种方法创建一个Graphics对象:1、利用窗体或控件的Paint事件中的Pain

4、tEventArgs来建立Graphics对象的引用,如:2、利用窗体或某个控件的CreateGraphics方法建立Graphics对象的引用,所建对象是控件或窗体的绘图区域,如:第7页/共47页3、创建绘图工具、创建绘图工具3.1 创建画笔(Pen)对象画笔用于绘制线条、勾勒形状轮廓或呈现其它几何表示形式;画笔对象用Pen类来创建,画笔通常具有宽度、样式和颜色三种属性:宽度用来确定所画线条的宽度,默认以像素为单位;颜色确定了所画的线条颜色;样式确定了所画线条的线型,如实线、虚线、点线等。第8页/共47页Pen类位于System.Drawing名词空间内,常用的构造函数有两种:public

5、Pen(Color color);Pen pen1=new Pen(Color.Red);public Pen(Color color,float width);Color pencolor=Color.FromArgb(0,255,0,0);Pen mypen=new Pen(pencolor,2);第9页/共47页3.2 创建画刷(Brush)对象画刷对象用于填充图形区域,如实心形状、图像或文本,它指定了填充的特性;Brush类是一个抽象基类,不能用它来创建对象,GDI+系统提供了几种它的子类以供使用:SolidBrush:单色画刷HatchBrush:阴影画刷TextureBrush:纹

6、理画刷LinearGradientBrush:颜色渐变画刷PathGradientBrush:路径渐变画刷第10页/共47页3.2.1 单色画刷SolidBrush类是所有Brush之中最基础的一种,属于System.Drawing.Drawing2D名词空间,其主要用途是将某一特定区域填入单一的颜色;其构造函数如下:public SolidBrush(Color);SolidBrush bh1=new SolidBrush(Color.Red);第11页/共47页Graphics g=pictureBox1.CreateGraphics();SolidBrush b=new SolidBru

7、sh(Color.Blue);g.FillRectangle(b,10,10,200,100);第12页/共47页3.2.2 阴影画刷这种画刷具有两种颜色:前景色和背景色,前景色定义线条的颜色,背景色定义各线条之间间隙的颜色;有两个构造函数public HatchBrush(HatchStyle,Color);public HatchBrush(HatchStyle,Color,Color);其中HatchStyle为枚举类型,定义了阴影画刷的样式,常用取值如下表所示:第13页/共47页HatchBrush hb=new HatchBrush(HatchStyle.Cross,Color.Re

8、d);BackwardDiagonal从右上到左下的对角线的线条图案。Cross指定交叉的水平线和垂直线。DiagonalCross指定互相交叉的正向对角线和反向对角线。这些直线是锯齿消除的。ForwardDiagonal从左上到右下的对角线的线条图案。Horizontal水平线的图案。Vertical垂直线的图案。第14页/共47页Graphics g=pictureBox1.CreateGraphics();HatchBrush b=new HatchBrush(HatchStyle.Cross,Color.Blue);g.FillRectangle(b,10,10,200,100);第1

9、5页/共47页3.3.3 渐变画刷渐变画刷用于在某一特定的区域内产生渐变效果,一般而言,常见的渐变效果是由两个颜色逐渐变化而来的;在.NET中有两种渐变画刷:LinearGradientBrush:可以显示线型渐变效果(线性渐变);PathGradientBrush:可以显示比较有弹性的渐变效果(路径渐变)。第16页/共47页LinearGradientBrush的构造函数public LinearGradientBrush(Point point1,Point point2,Color color1,Color color2);其中:point1:表示渐变起始点;point2:渐变终结点;c

10、olor1:表示渐变起始颜色;color2:渐变终结颜色。第17页/共47页Graphics g=pictureBox1.CreateGraphics();LinearGradientBrush b=new LinearGradientBrush(new Point(0,0),new Point(300,200),Color.Red,Color.Black);g.FillRectangle(b,0,0,300,200);第18页/共47页4、Graphics对象的常用画图方法对象的常用画图方法4.1 画直线Graphics对象的DrawLine方法提供了在两点间画直线的方法,它有两种使用方法:

11、public void DrawLine(Pen,int,int,int,itn);public void DrawLine(Pen,Point,Point);其中,第一个参数给出了画直线的画笔工具,在画笔工具里包含了线条粗细、颜色与样式等信息,而后面的参数则给出了直线的起点与终点,如:Graphics g=this.CreateGraphics();g.DrawLine(new Pen(Color.Red),10,10,100,100);第19页/共47页4.2 画矩形(1)绘制空心矩形采用Graphics对象的DrawRectangle方法可使用指定的画笔绘制一空心矩形,使用方法如下:Dr

12、awRectangle(Pen p,int x,int y,int width,int height);(2)绘制实心矩形采用Graphics对象的FillRectangle方法可使用指定的画刷绘制一实心矩形,使用方法如下:FillRectangle(Brush b,int x,int y,int widht,int height);第20页/共47页DrawRectangleFillRectangle第21页/共47页4.3 画椭圆(1)绘制空心椭圆使用Graphics对象的DrawEllipse方法可使用指定的画笔绘制一空心椭圆:DrawEllipse(Pen p,int x,int y,

13、int width,int height);DrawEllipse(Pen p,Rectangle rect);(2)绘制实心椭圆使用Graphics对象的FillEllipse方法可使用指定的画刷绘制一实心椭圆:FillEllipse(Brush b,int x,int y,int widht,int height);FillEllipse(Brush b,Rectangle rect);第22页/共47页Pen p=new Pen(Color.Red);g.DrawEllipse(p,10,10,200,100);SolidBrush b=new SolidBrush(Color.Red)

14、;g.FillEllipse(b,10,10,200,100);第23页/共47页4.4 绘制弧线弧是椭圆的一部分,计量单位为度,我们把从“起始角”开始的连续角度称作弧度,弧线就是从起始角开始,按照弧度旋转而成的线段;按顺时针旋转的弧度为正,按逆时针旋转的弧度为负,如:第24页/共47页在绘制椭圆时,我们使用椭圆的边界矩形来指定椭圆的尺寸,因此绘制弧线时也需要按照边界矩形来确定尺寸;常用的绘制弧线的方法有以下三个:(1)DrawArc方法,绘制一段弧线,格式如下:DrawArc(Pen p,int x,int y,int width,int height,int startAngle,int

15、sweepAngle);其中,startAngle为起始角度,sweepAngle为旋转度;第25页/共47页(2)DrawPie方法,用于画一条弧线,并将弧的两个端点与圆心相连,即画出一个扇形轮廓,使用方法:DrawPie(Pen p,int x,int y,int width,int height,int startAngle,int sweepAngle);其中各参数的意义与DrawArc类似;(3)FillPie方法,使用指定画刷填充扇形,使用方法:FillPie(Brush b,int x,int y,int width,int height,int startAngle,sweep

16、Angle);第26页/共47页g.DrawArc(p,10,10,200,100,0,90);g.DrawPie(p,10,10,200,100,0,90);SolidBrush b=new SolidBrush(Color.Red);g.FillPie(b,10,10,200,100,0,90);第27页/共47页4.5 绘制多边形与折线Graphics对象提供了以下一些用于绘制多边形的方法:(1)DrawLines方法,绘制一系列的折线,各个折线点的坐标用Points数组指定,若最后的点不等于第一个点的坐标,那么图形不封闭,使用方法:DrawLines(Pen p,Point point

17、s);(2)DrawPolygon方法,绘制多边形,即使最后一个点和第一个点不相同,也绘制封闭多边形,使用方法:DrawPolygon(Pen p,Point points);(3)FillPolygon方法,填充多边形,使用方法:FillPolygon(Brush b,Point points);第28页/共47页Pen p=new Pen(Color.Red);Point points=new Point3;points0=new Point(10,10);points1=new Point(60,100);points2=new Point(200,20);g.DrawLines(p,p

18、oints);SolidBrush b=new SolidBrush(Color.Red);g.FillPolygon(b,points);g.DrawPolygon(p,points);第29页/共47页5、图像处理概述、图像处理概述5.1 图像文件类型使用GDI+可以显示和处理多种格式的图像文件,其中主要包括:位图(*.bmp)Icon(*.ico)GIF(*.gif)JPEG(*.jpg)第30页/共47页5.2 图像对象在.NET中,进行图像处理一般是通过Image类及其派生类来实现;Image类是一个抽象类,不能直接使用,实践中主要使用它的派生类Bitmap类;Bitmap类封装了G

19、DI+位图,可以处理由像素数据定义的图像,该类属于System.Drawing名词空间;第31页/共47页Bitmap类的构造函数:Bitmap(string filename);Bitmap(Image img);Bitmap(Stream stream);Bitmap bm=new Bitmap(“test.bmp”);Bitmap类的GetPixel和SetPixel方法:GetPixel方法用于获取图像中指定像素的颜色;SetPixel方法用于设定图像中指定像素的颜色;Bitmap bm=new Bitmap(“test.jpg”);Color c=bm.GetPixel(100,10

20、0);c.R=c.R/2;bm.SetPixel(100,100,c);第32页/共47页6、图像的显示和保存、图像的显示和保存在程序中,用于显示图片常用pictureBox控件,要在该控件上显示图片,需设置其Image属性,通过属性框或者程序运行时的OpenFileDialog对话框,可以指定Image属性;Bitmap image=new Bitmap(filename);pictureBox1.Image=image;第33页/共47页保存图像可以使用Bitmap类的Save方法,该方法的使用方式主要有以下两种:Save(string filename);Save(string file

21、name,ImageFormat format);Bitmap bm=new Bitmap(“test.bmp”);bm.Save(“test.jpg”,ImageFormat.Jpeg);注:ImageFormat类位于System.Drawing.Imaging 里第34页/共47页7、图像拷贝和粘贴、图像拷贝和粘贴在C#中,Clipboard类提供了将数据放在系统剪贴板和从系统剪贴板恢复数据的方法,它位于名词空间System.Windows.Forms 里;Clipboard类只有三个成员:构造函数:SetDataObject:该静态方法实现往剪贴板上写数据,使用方式如下:Clipboa

22、rd.SetDataObject(Object obj);第35页/共47页GetDataObject:该静态方法负责从剪贴板中获取数据,它将返回IDataObject,可以使用IDataObject的GetDataPresent方法来判断当前数据是否是指定的数据,然后使用GetData方法获取指定格式的数据,如:IDataObject dtObj=Clipboard.GetDataObject();if(dtObj.GetDataPresent(DataFormats.Bitmap)Image im=dtObj.GetData(DataFormats.Bitmap);第36页/共47页实例:

23、1、建立Windows应用程序项目;2、设计界面如下:第37页/共47页3、编写“复制”按钮的单击事件处理程序:4、编写“粘贴”按钮的单击事件处理程序:第38页/共47页8、图像处理应用实例、图像处理应用实例实例1 改变图像分辨率图像的分辨率决定了图像与原物的逼近程度,对同一大小的图像,像素越多,即将图像分割得越细,图像就越逼真,这就称为分辨率高,反之为分辨率低;练习:将256*256分辨率的图像变换为64*64分辨率;1、创建Windows应用程序项目;第39页/共47页2、设计程序界面如下:第40页/共47页3、处理按钮单击事件:第41页/共47页第42页/共47页实例2 彩色图像变换为灰度图像1、创建Windows应用程序项目;2、设计界面如下:第43页/共47页3、编写按钮单击事件:第44页/共47页第45页/共47页作业作业设计如下图所示的Windows应用程序:第46页/共47页感谢您的观看。第47页/共47页

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 应用文书 > PPT文档

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

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁