第12章绘图及图像处理.ppt

上传人:本田雅阁 文档编号:3124781 上传时间:2019-07-13 格式:PPT 页数:35 大小:293.52KB
返回 下载 相关 举报
第12章绘图及图像处理.ppt_第1页
第1页 / 共35页
第12章绘图及图像处理.ppt_第2页
第2页 / 共35页
第12章绘图及图像处理.ppt_第3页
第3页 / 共35页
第12章绘图及图像处理.ppt_第4页
第4页 / 共35页
第12章绘图及图像处理.ppt_第5页
第5页 / 共35页
点击查看更多>>
资源描述

《第12章绘图及图像处理.ppt》由会员分享,可在线阅读,更多相关《第12章绘图及图像处理.ppt(35页珍藏版)》请在三一文库上搜索。

1、第12章 绘图及图像处理,唐大仕 http:/,内容提要,GDI+及其基本类 Graphics对象及绘图方法 控件与绘图 图像处理 应用示例,1. GDI+及其基本类,GDI+技术简介,GDI:Graphics Device Interface. GDI+:GDI的改进,同时也是.NET框架结构的重要组成部分。和GDI一样它提供料对二维图形图像和文字排版处理的支持 参见WinGDI目录,FirstExample,新建一个C#WindowsForm程序 为orm添加Paint事件 添加头文件 using System.Drawing.Text; using System.Drawing.Dra

2、wing2D; 在事件中添加如下代码: Graphics g = e.Graphics; Pen pen = new Pen(Color.Red,2); Brush brush = new SolidBrush(Color.Blue); Font font = new Font(“宋体“,25); Rectangle rect = new Rectangle(20,120,100,160); g.DrawLine(pen,20,100,100,100); g.DrawRectangle(pen,rect); g.DrawString(“GDI+图形编程“,font,brush,20,20);

3、brush.Dispose(); font.Dispose(); pen.Dispose();,.NET框架结构中对GDI的封装,坐标系统,GDI+的坐标系统,System.Drawing中常用的结构,Color Color封装了对颜色的定义。该结构中封装了 数百个分别对应与标准调色板色彩的静态成员。如Color.Red代表红色,Color.Purple代表紫色 有用的静态方法: FromArgb:通过三原色构建Color对象 FromKnownColor:通过已知颜色构建Color对象 FromName:通过颜色名称来构建Color对象 例如: Color temp1 = Color.Bla

4、ck; Color temp2 = Color.FromArgb(0,0,0) Color temp3 = Color.FromName(“Black”);,表示绘制平面上的一个尺寸,一个为整数,一个为浮点数 构造函数 Size sz1 = new Size(10,10) 属性: Width: 表示宽度值 Height:表示高度值 重载了加、减、比较、赋值操作 Size sz2 = sz1; Size sz3 = sz1 -sz2; Size sz4 = sz1+sz2;,常用对象:Size和SizeF,表示绘制平面上点的坐标,一个为整数,另外一个为浮点数 构造方法: Point pt = n

5、ew Point(20,20); Point pt = new Point(new Size(10,10) 重载了加、减、比较、赋值操作,常用对象:Point和PointF,Rectangle和RectangleF,表示绘制平面上的一个矩形区域 属性 Bottom:矩形底部的纵座标 Top:矩形顶部的纵座标 Left:矩形坐部的横座标 Right:矩形右部的横座标 Height:矩形的高度 Width:矩形的宽度 Size:矩形的尺寸 IsEmpty:矩形是否为空(高度和宽度是否都是) X:矩形左上角的横座标 Y:矩形左上角的纵座标,2. Graphics对象及绘图方法,Graphics类,使

6、用GDI+绘图,首先要创建Graphics类 Graphics使用的两种方法 在OnPaint 事件中使用 Protected override void OnPaint(PaintEventArgs e) Graphics g = e.Graphics; 在其他情况使用 Graphics g = this.CreateGraphics(); Try /作图 Finally if(g!=null) (IDisposable)g).Dispose(); ,Graphics对象绘图方法,DrawArc:绘制圆弧 DrawBezier:绘制贝塞尔曲线 DrawBeziers:绘制贝塞尔曲线组 Dra

7、wClosedCurve:绘制封闭曲线 DrawCurve:绘制曲线 DrawEllipse:绘制椭圆 DrawIcon:绘制图标 DrawIconUnstretched:无缩放绘制图标 DrawImage:绘制图像 DrawImageUnscaled:无缩放绘制图像 DrawLine:绘制直线 DrawLines:绘制直线组 DrawPath:绘制GraphicsPath对象 DrawPie:绘制圆饼 DrawPolygon:绘制多边形 DrawRectangle:绘制矩形 DrawRectangles:绘制矩形组 DrawString:绘制文本,Graphics对象绘制实心图形方法 Fil

8、lClosedCurve:绘制实心封闭曲线 FillEllipe:封闭实心椭圆 FillPath:GraphicsPath对象 FillPie:绘制实心圆饼 FillPolygon:绘制实心多边形 FillRectangle:绘制实心矩形 FillRectangles:绘制实心矩形组 FillRegion:绘制实心Region对象,Graphics对象绘图方法,画笔和画刷,Pen 在System.Drawing名称空间中 用来指定图形的轮廓,如颜色和宽度等 画笔创建 Pen pen = new Pen(Color.Blue,5) 使用Pens类,画笔的属性:,Brush,Brush对象是一个抽

9、象类,不能被直接使用。它有个派生类,分别实行不同类型的画刷。 画刷类型: SolidBrush:实心画刷(最简单) HatchBrush:带阴影线的画刷 LinearGradientBrush:填充颜色线性渐变的画刷 PathGradientBrush:填充颜色沿路径渐变的画刷 TextureBrush:使用图像进行填充的画刷 使用Brushes类,绘制文本,Font类回顾 FontFamiliy:字体家族,如Times New Roman、宋体等 字体大小:float类型 字体风格 Bold:粗体 Italic:斜体 Regular:正规 Strikeout:加删除线 Underline:加

10、下划线 例如: Font myFont = new Font(“宋体”,16,FontStyle.Bold|FontStyle.Italic); 以上代码创建了宋体家族的字体对象,字体大小为,样式为粗斜体。,DrawString的使用方法,DrawString(string,Font,Brush,PointF); DrawString(string,Font,Brush,RectangleF); DrawString(string,Font,Brush,PointF,StringFormat); DrawString(string,Font,Brush,RectangleF,StringFor

11、mat); DrawString(string,Font,Brush,float,float); DrawString(string,Font,Brush,float,float,StringFormat);,绘制图形,直线的绘制 DrawLine,3. 控件与绘图,处理重绘和无效操作,调用以下几个方法 void Invalidate(); void Invalidate( Rectangle ) ; void Update(); void Refresh();,双缓冲技术,1、在内存中建立一块“虚拟画布”: Bitmap bmp = new Bitmap(600, 600); 2、获取这块内

12、存画布的Graphics引用: Graphics g = Graphics.FromImage(bmp); 3、在这块内存画布上绘图: g.FillEllipse(brush, i * 10, j * 10, 10, 10); 4、将内存画布画到窗口中 this.CreateGraphics().DrawImage(bmp, 0, 0);,控件的DoubleBuffered属性,在V 2008中有,4. 图像处理,GDI+中的图像处理,GDI+中对图像处理提供了以下支持: 支持BMP、GIF、JPEG、PNG、TIFF、ICON等等广泛格式的图像文件 提供了用于多种光栅图像格式进行编码和解码的

13、公共接口 支持为图像格式添加动态格式 支持对图像的像素进行多种处理,包括亮度、对比度、颜色平衡、模糊、消弱等 支持对图像进行旋转、剪切等操作 主要通过Image(抽象类)实现,Bitmap类,从Image派生 可以处理BMP、Jpeg、GIF、PNG等格式 构建 Bitmap bt1 = new Bitmap(“c:1.bmp”); Bitmap bt2 = new Bitmap(bt1,200,300); Bitmap bt3; bt3.FromFile(“文件名称”);,常见的处理方法,整个图像的处理 DrawImage 示例 ThumbnailTest.cs 针对图像像素的处理,Pain

14、t.NET,http:/www.eecs.wsu.edu/ 应用示例,Splatter DrawRunningCurve ScreenSaver GravityBall,关于Transform,myGraphics.DrawEllipse(myPen, 0, 0, 100, 50); myGraphics.ScaleTransform(1, 0.5f); myGraphics.TranslateTransform(50, 0, MatrixOrder.Append); myGraphics.RotateTransform(30, MatrixOrder.Append); myGraphics.DrawEllipse(myPen, 0, 0, 100, 50); myGraphics.Transfrom 是一个Matrix,关于Path、关于渐变Brush,图像的处理,图像文件bmp的格式 使用Lock及指针 几个例子 http:/

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

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1