收藏 分享(赏)

c第09章二维图形图像处理PPT课件.ppt

上传人:Facebook 文档编号:3833811 上传时间:2018-11-20 格式:PPT 页数:31 大小:468.50KB
下载 相关 举报
c第09章二维图形图像处理PPT课件.ppt_第1页
第1页 / 共31页
c第09章二维图形图像处理PPT课件.ppt_第2页
第2页 / 共31页
c第09章二维图形图像处理PPT课件.ppt_第3页
第3页 / 共31页
c第09章二维图形图像处理PPT课件.ppt_第4页
第4页 / 共31页
c第09章二维图形图像处理PPT课件.ppt_第5页
第5页 / 共31页
点击查看更多>>
资源描述

1、第1部分 第9章 二维图形图像处理,9.1 GDI+概述 9.2 绘制基本图形 9.3 图像处理,9.1 GDI+概述,GDI+:Graphics Device Interface (图形设备接口),它提供了高级图形图像处理功能 在C#中,通过一套部署为托管代码的类来展现提供的图形图像处理功能,这套类被称为GDI+的托管类。利用GDI+的托管类可以轻松实现颜色渐变、透明处理、纹理处理、拉伸和缩放等多种高级功能。 GDI+主要提供了三类服务:1. 二维矢量图形处理2.二维图像处理3.文字显示,在C#中,所有图形图像处理功能都包含在以下名称空间下: 1.System.Drawing名称空间 提供了

2、对GDI+基本图形功能的访问,主要有Graphics类Bitmap类、从Brush类继承的类、Font类、Icon类、Image类、Pen类、Color类等。 2.System.Drawing.Drawing2D名称空间 提供了高级的二维和矢量图形处理功能。主要有:梯度型画刷、Matrix类(用于定义几何变换)和GraphicsPath类等。 3.System.Drawing.Imaging名称空间 提供了高级 图像处理功能。 4.System.Drawing.Text名称空间提供了高级 字体和文本排版功能,9.1 GDI+概述(续),9.1.2 Graphics类,绘制图形图像前,首先必须创

3、建Graphics对象,然后利用这个对象绘制直线、曲线、椭圆等图形图像。 有三种常见的创建Graphics对象的方法。1.在窗体或控件的Paint事件中获取Graphics对象。例如:private void Form1_Paint()Graphics g = e.Graphics;,2.通过当前窗体的CreateGraphics方法,把当前窗体的画笔、字体、颜色作为默认值,获取对Graphics对象的引用。例如:Graphics g = this.CreateGraphics(); 3. 从继承自图像的任何对象创建Graphics对象,例如:Bitmap myBitmap = new Bit

4、map(“C:mytest1PicsmyPic.bmp“);Graphics g = Graphics.FromImage(myBitmap);,9.1.2 Graphics类(续),9.1.3 颜色,颜色封装在System.Drawing.Color结构中。人眼可以分辨的任何颜色都是由一定的红、绿、蓝三色光组成。任何一种颜色都可以有四个分量: R:红色,取值范围0255,0表示没有红色成分,255为饱和红色; G:绿色,取值范围0255,0表示没有绿色成分,255为饱和绿色; B:蓝色,取值范围0255,0表示没有蓝色成分,255为饱和蓝色; A:Alpha值,即透明度,取值范围0255,0

5、表示完全透明,255表示完全不透明。,在代码中声明颜色的方式常用有两种:1.调用静态方法Color.FromArgb()指定任意颜色,这种方法有两种常用形式。 第一种形式为直接指定三种颜色,方法原型为:Public static Color FromArgb (int red,int green,int blue); 三个参数分别表示R、G、B三色,Alpha值使用默认值255,即完全不透明。例如:Color red = Color.FromArgb(255, 0, 0); 第二种形式为四个参数,方法原型为:Public static Color FromArgb (int alpha,int

6、 red,int green, int blue);四个参数分别表示透明度、R、G、B三色值。,9.1.3 颜色(续),2.系统预定义颜色System.Drawing.Color结构中提供了许多静态性,每个属性返回一个命名颜色,在Color结构中已经预定义了141种颜色,可以直接使用。例如:this.BackColor = Color.White;,9.1.3 颜色(续),9.1.4 画笔和画刷,画笔(Pen) 画笔可用于绘制绘制具有指定宽度和样式的直线、曲线或轮廓形状。下面的示例说明如何创建一支基本的蓝色画笔:Pen myPen = new Pen(Color.Blue); Pen myPe

7、n = new Pen(Color.Blue, 10.5f); 也可以从画刷对象创建画笔对象,例如:SolidBrush myBrush = new SolidBrush(Color.Red); Pen myPen = new Pen(myBrush);Pen myPen = new Pen(myBrush, 5);【例9-2 】画笔(Pen)的用法。,9.1.4 画笔和画刷(续),画刷(Brush) 画刷是可以与Graphics对象一起使用来创建实心形状和呈现文本的对象。可以用来填充各种图形形状,如矩形、椭圆、饼型图和多边形等。下表列出了几种不同类型的画刷。,1)使用SolidBrush类定

8、义单色画刷SolidBrush类用于定义单色画刷。该类可以填充图形,比如矩形、椭圆、多边形和路径。 【例9-3 】单色画刷演示示例。,9.1.4 画笔和画刷(续),运行结果如右图所示:,2)使用HatchBrush类填充简单图案 HatchBrush类提供的画刷可以用各种图案填充图形。通过 Hatch类型可以设置影线样式。在创建影线的画刷时,能设定前 景色、背景色和影线样式。有56种不同的影线样式枚举,该枚举 可以参看System.Drawing.Drawing2D.HatchStyle枚举。 【例9-4 】填充简单图案示例。,9.1.4 画笔和画刷(续),运行结果如右图所示:,3)使用Tex

9、tureBrush类填充复杂图像 TextureBrush类使用图像作为填充的样式,它可以使用例如.bmp、.jpg、.png等格式的图像。初始化一个新的TextureBrush对象需要指定填充的图像。【例9-5 】创建TextureBrush示例。运行效果:,9.1.4 画笔和画刷(续),4)使用LinearGradientBrush类定义线性渐变LinearGradientBrush对象用颜色线性渐变填充图形。提供了以下三种构造函数:(1) 提供两个点和两种颜色。Public LinearGradientBrush ( Point point1, Point point2,Color co

10、lor1, Color color2)(2) 提供一个矩形和一个角度。Public LinearGradientBrush (Rectangle rect ,Color color1,Color color2,float angle)(3) 指定渐变的模式。Public LinearGradientBrush (Rectangle rect ,Color color1,Color color2, LinearGradientMode linearGradientMode),9.1.4 画笔和画刷(续),【例9-6 】使用点描述线性渐变。 运行效果:【例9-7】使用矩形描述线性渐变。 运行效果:

11、,9.1.4 画笔和画刷(续),5)使用PathGradientBrush类实现彩色渐变在GDI+中,把一个或多个图形组成的形体称为路径。可 以使用GraphicsPath类定义路径,使用PathGradientBrush类 定义路径内部的渐变色画刷。渐变色从路径的内部中心点逐渐 过渡到路径的外边界边缘。PathGradientBrush类提供了三种重载的构造函数,其中 常用的是通过指定路径实现彩色渐变。常用形式如下:Public PathGradientBrush ( GraphicsPath path) 【例9-8 】路径和路径画刷的使用示例。 运行效果:,9.1.4 画笔和画刷(续),9

12、.2 绘制基本图形,所有绘制图形的方法都位于Graphics中。 9.2.1 直线 DrawLine方法:绘制一条直线,常用形式:1) 绘制一条连接指定两个Point结构的线。public void DrawLine (Pen pen,Point pt1, Point pt2)其中,Pen对象确定线条的颜色、宽度和样式;Point结构确定起点和终点。2) 绘制一条由坐标对指定的两个点的线。public void DrawLine (Pen pen,int x1, int y1,int x2,int y2)其中,Pen对象确定线条的颜色、宽度和样式;x1,y1为起点坐标,x2,y2为终点坐标。,

13、9.2.1 直线(续),DrawLines方法:绘制一系列点组成的线。常用形式:public void DrawLines (Pen pen,Point points) 其中,Pen对象确定线条的颜色、宽度和样式;数组中的第一个点指定起始点,后面的每个点都以相临的前一个点为起始点组成线段。 【例9-9 】使用DrawLine方法和DrawLines方法绘制直线。,矩形分为轮廓和封闭区域两部分 DrawRectangle(或DrawRectangles)用于绘制矩形的轮廓。 FillRectangle(或FillRectangles)用于填充矩形的封闭区域。 【例9-10】绘制矩形方法示例。,9

14、.2.2 矩形,9.2.3 多边形,DrawPolygon方法:绘制多边形的轮廓 FillPolygon方法:填充多边形的封闭区域。【例9-11】绘制多边形示例。,9.2.4 曲线,1. DrawCurve方法 用光滑的曲线把给定的点连接起来,常用形式有:1) public void DrawCurve (Pen pen ,Point points )其中,Point结构类型的数组中指明各节点,默认弯曲强度为0.5。注意,数组中至少要有3个元素。2) public void DrawCurve (Pen pen ,Point points,float tension )其中,tension指定

15、弯曲强度,该值范围为0.0f1.0f,超出此范围会产生异常。当弯曲强度为零时,就是直线。,9.2.4 曲线(续),2. DrawClosedCurve方法通过连接数组中节点画一个平滑的曲线,此方法会自动把首尾节点连接起来构成封闭曲线。注意数组中的节点至少要有3个点组成,默认弯曲强度为0.5。1) public void DrawClosedCurve (Pen pen ,Point points )其中,Point结构类型的数组中指明各节点。2) public void DrawClosedCurve (Pen pen ,Point points,float tension FillMode

16、fillmode)其中,fillmode指明曲线封闭区域内以何种方式填充。,9.2.4 曲线(续),3. 贝塞尔曲线每段贝塞尔曲线由4个点组成,两个端点(p1为起点,p2为终点)和两个控制点(c1和c2)。曲线不经过控制点,但是控制点如同一个磁体吸引曲线,影响并引导曲线向某个方向拉伸。,9.2.4 曲线(续),1) DrawBezier方法:绘制一段贝塞尔曲线的,常用形式:public void DrawBezier (Pen pen ,Point pt1,Point pt2,Point pt3,Point pt4 )其中pt1、pt2、pt3和pt4分别指定四个点。 2) DrawBezie

17、rs方法:绘制多段贝塞尔曲线,常用形式:public void DrawBezier (Pen pen ,Point points)其中points是Point结构的数组,第一段贝塞尔曲线由点数组中的第14个点绘制而成。以后每段曲线只需要3个点:2个控制点和一个结束点。前一段曲线的结束点会自动被用作后一段曲线的起始点。,9.2.4 曲线(续),【例9-12 】绘制曲线示例。,9.2.5 椭圆,1. DrawEllipse方法1)给定椭圆左上角坐标和椭圆的外接矩形的宽度和高度public void DrawEllipse(Pen pen, int x, int y, int width, int

18、 height);其中,pen为Pen对象,x, y为椭圆左上角的坐标,width定义椭圆外接矩形的宽度,height定义椭圆外接矩形的高度。2)给定椭圆外接矩形的结构public void DrawEllipse(Pen pen, Rectangle rect);其中,rect为Rectangle结构,用于确定椭圆的边界。,9.2.5 椭圆(续),2. FillEllipse方法1) 给定椭圆左上角坐标和椭圆的外接矩形的宽度和高度public void FillEllipse( Brush brush, int x, int y, int width, int height);其中,x, y

19、为椭圆左上角的坐标,width定义椭圆外接矩形的 宽度,height定义椭圆外接矩形的高度。2) 给定椭圆外接矩形的结构public void FillEllipse(Brush brush, Rectangle rect);其中,rect为Rectangle结构,用于确定椭圆的边界。,9.2.5 椭圆(续),【例9-13 】绘制椭圆示例。,9.2.6 扇形(续),1. DrawPie方法1) public void Drawpie(Pen pen, int x, int y, int width, int height, int startAngle, int sweepAngle);其中,

20、pen为Pen对象,x, y为椭圆左上角的坐标,width定义扇形外接矩形的宽度,height定义扇形外接矩形的高度,startAngle为起始角度(以度为单位),sweepAngle为延伸角度。2) public void DrawPie(Pen pen, Rectangle rect, float startAngle, float sweepAngle);其中,rect为Rectangle结构,用于确定扇形的外接矩形。,9.2.6 扇形(续),2. FillPie方法 1)public void FillPie(Brush brush, int x, int y, int width,

21、int height, int startAngle, int sweepAngle);其中,brush为SolidBrush对象,x, y为椭圆左上角的坐标,width定义扇形外接矩形的宽度,height定义扇形外接矩形的高度,startAngle为起始角度(以度为单位),sweepAngle为延伸角度。2)public void FillPie(Brush brush, Rectangle rect, float startAngle, float sweepAngle);其中,rect为Rectangle结构,用于确定扇形的边界。,9.2.6 扇形(续),【例9-14 】绘制扇形示例。,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 中等教育 > 小学课件

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报