图形图像处理基础

上传人:ji****72 文档编号:48609022 上传时间:2018-07-18 格式:PPT 页数:47 大小:1.46MB
返回 下载 相关 举报
图形图像处理基础_第1页
第1页 / 共47页
图形图像处理基础_第2页
第2页 / 共47页
图形图像处理基础_第3页
第3页 / 共47页
图形图像处理基础_第4页
第4页 / 共47页
图形图像处理基础_第5页
第5页 / 共47页
点击查看更多>>
资源描述

《图形图像处理基础》由会员分享,可在线阅读,更多相关《图形图像处理基础(47页珍藏版)》请在金锄头文库上搜索。

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

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

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

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

5、lor); 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); 3.2 创建画刷(Brush)对象 画刷对象用于填充图形区域,如实心形状、图 像或文本,它指定了填充的特性; Brush类是一个抽象基类,不能用它来创建对象 ,GDI+系统提供了几种它的子类以供使用: SolidBrush:单色画刷 HatchBrush:阴影画刷 TextureBrus

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

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

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

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

10、渐变终结点; color1:表示渐变起始颜色; color2:渐变终结颜色。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);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); 4.2 画矩形 (1)绘制空心矩形 采用Graphics对象的DrawRectangle方法可使用指定 的画笔绘制一空心

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

13、 int x, int y, 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);Pen p = new Pen(Color.Red); g.DrawEllipse(p, 10, 10, 200, 100);SolidBrush b

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

15、 int height, int startAngle, int sweepAngle); 其中,startAngle为起始角度,sweepAngle为旋转度; (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,

16、 int width, int height, int startAngle, sweepAngle);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); 4.5 绘制多边形与折线 Graphics对象提供了以下一些用于绘制多边形 的方法: (1)DrawLines方法,绘制一系列的折线,各个折 线点的坐标用Points数组指定,若最后的点不等于 第一个点的坐标,那么图形不封闭,使用方法: DrawLines(Pen p, Point points

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

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号