第12章图及图像处理

上传人:仙*** 文档编号:46829659 上传时间:2021-12-15 格式:PPT 页数:35 大小:139KB
收藏 版权申诉 举报 下载
第12章图及图像处理_第1页
第1页 / 共35页
第12章图及图像处理_第2页
第2页 / 共35页
第12章图及图像处理_第3页
第3页 / 共35页
资源描述:

《第12章图及图像处理》由会员分享,可在线阅读,更多相关《第12章图及图像处理(35页珍藏版)》请在装配图网上搜索。

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

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

3、pose();nfont.Dispose();npen.Dispose();.NET框架结构中对GDI的封装 .NET 框架名称空间 System.Drawing System.Drawing.2D System.Drawing.Imaging System.Drawing.Text 提供了对 GDI+ 基本图形功能的访问,对于进行一般的图形绘制来说是足够了 提供高级的二维和矢量图形功能 提供高级 GDI+ 图像处理功能 提供高级 GDI+ 排版功能,该命名空间中的类允许用户创建和使用多种字体 坐标系统nGDI+的坐标系统 (0,0) (X,0) (0,Y) 注: (,)为屏幕的分别率 Sys

4、tem.Drawing中常用的结构nColornColor封装了对颜色的定义。该结构中封装了 数百个分别对应与标准调色板色彩的静态成员。如Color.Red代表红色,Color.Purple代表紫色n有用的静态方法:nFromArgb:通过三原色构建Color对象nFromKnownColor:通过已知颜色构建Color对象nFromName:通过颜色名称来构建Color对象n例如:nColor temp1 = Color.Black;nColor temp2 = Color.FromArgb(0,0,0)nColor temp3 = Color.FromName(“Black”);n表示绘制

5、平面上的一个尺寸,一个为整数,一个为浮点数n构造函数nSize sz1 = new Size(10,10)n属性:nWidth: 表示宽度值nHeight:表示高度值n重载了加、减、比较、赋值操作nSize sz2 = sz1;nSize sz3 = sz1 -sz2;nSize sz4 = sz1+sz2;常用对象:Size和SizeFn表示绘制平面上点的坐标,一个为整数,另外一个为浮点数n构造方法:nPoint pt = new Point(20,20);nPoint pt = new Point(new Size(10,10)n重载了加、减、比较、赋值操作常用对象:Point和Point

6、FRectangle和RectangleFn表示绘制平面上的一个矩形区域n属性nBottom:矩形底部的纵座标nTop:矩形顶部的纵座标nLeft:矩形坐部的横座标nRight:矩形右部的横座标nHeight:矩形的高度nWidth:矩形的宽度nSize:矩形的尺寸nIsEmpty:矩形是否为空(高度和宽度是否都是)nX:矩形左上角的横座标nY:矩形左上角的纵座标2. Graphics对象及绘图方法Graphics类n使用GDI+绘图,首先要创建Graphics类nGraphics使用的两种方法n在OnPaint 事件中使用Protected override void OnPaint(Pai

7、ntEventArgs e) Graphics g = e.Graphics;n在其他情况使用Graphics g = this.CreateGraphics();Try/作图Finallyif(g!=null)(IDisposable)g).Dispose();Graphics对象绘图方法nDrawArc:绘制圆弧nDrawBezier:绘制贝塞尔曲线nDrawBeziers:绘制贝塞尔曲线组nDrawClosedCurve:绘制封闭曲线nDrawCurve:绘制曲线nDrawEllipse:绘制椭圆nDrawIcon:绘制图标nDrawIconUnstretched:无缩放绘制图标nDra

8、wImage:绘制图像nDrawImageUnscaled:无缩放绘制图像nDrawLine:绘制直线nDrawLines:绘制直线组nDrawPath:绘制GraphicsPath对象nDrawPie:绘制圆饼nDrawPolygon:绘制多边形nDrawRectangle:绘制矩形nDrawRectangles:绘制矩形组nDrawString:绘制文本nGraphics对象绘制实心图形方法nFillClosedCurve:绘制实心封闭曲线nFillEllipe:封闭实心椭圆nFillPath:GraphicsPath对象nFillPie:绘制实心圆饼nFillPolygon:绘制实心多边

9、形nFillRectangle:绘制实心矩形nFillRectangles:绘制实心矩形组nFillRegion:绘制实心Region对象Graphics对象绘图方法画笔和画刷1.Pen在System.Drawing名称空间中用来指定图形的轮廓,如颜色和宽度等画笔创建Pen pen = new Pen(Color.Blue,5)使用Pens类n画笔的属性:属性描述取值Alignment指定相对于理论上、零宽度的线条的 Pen 对象的对齐方式 PenAlignment.Center:位于所绘制线条的中央PenAlignment:Insert:位于所绘制线条的嵌入内部PenAlignment.Le

10、ft:位于所绘制线条的左侧PenAlignment.OutSet:位于所绘制线条的嵌入外部PenAlignment.Right:位于所绘制线条的右侧DashStyle绘制线条的虚线类型DashStyle.Custom:用户自定义DashStyle.Dash:线条由线段组成DashStyle.DashDot:线条由线段和点组成DashStyle.DashDotDot:线条由线段、点和点组成DashStyle.Dot:线条由点组成DashStyle.Solid:线条由实线组成StartCapEndCap绘制线条的起点和终点类型LineCapLAnchorMask指定用于检查线帽是否为锚头帽的掩码。

11、ArrowAnchor指定箭头状锚头帽。CustomCustom指定自定义线帽。DiamondAnchor指定菱形锚头帽。FlatFlat指定平线帽。NoAnchor指定没有锚。RoundRound指定圆线帽。RoundAnchor指定圆锚头帽。SquareSquare指定方线帽。SquareAnchor指定方锚头帽。TriangleTriangle指定三角线帽。BrushnBrush对象是一个抽象类,不能被直接使用。它有个派生类,分别实行不同类型的画刷。n画刷类型:nSolidBrush:实心画刷(最简单)nHatchBrush:带阴影线的画刷nLinearGradientBrush:填充颜

12、色线性渐变的画刷nPathGradientBrush:填充颜色沿路径渐变的画刷nTextureBrush:使用图像进行填充的画刷n使用Brushes类绘制文本1.Font类回顾nFontFamiliy:字体家族,如Times New Roman、宋体等n字体大小:float类型n字体风格wBold:粗体wItalic:斜体wRegular:正规wStrikeout:加删除线wUnderline:加下划线n例如:Font myFont = new Font(“宋体”,16,FontStyle.Bold|FontStyle.Italic);以上代码创建了宋体家族的字体对象,字体大小为,样式为粗斜体

13、。DrawString的使用方法nDrawString(string,Font,Brush,PointF);nDrawString(string,Font,Brush,RectangleF);nDrawString(string,Font,Brush,PointF,StringFormat);nDrawString(string,Font,Brush,RectangleF,StringFormat);nDrawString(string,Font,Brush,float,float);nDrawString(string,Font,Brush,float,float,StringFormat)

14、;绘制图形1.直线的绘制nDrawLine3. 控件与绘图处理重绘和无效操作n调用以下几个方法nvoid Invalidate();nvoid Invalidate( Rectangle ) ;nvoid Update();nvoid Refresh();双缓冲技术n1、在内存中建立一块“虚拟画布”:nBitmap bmp = new Bitmap(600, 600);n2、获取这块内存画布的Graphics引用:nGraphics g = Graphics.FromImage(bmp);n3、在这块内存画布上绘图:ng.FillEllipse(brush, i * 10, j * 10, 1

15、0, 10);n4、将内存画布画到窗口中nthis.CreateGraphics().DrawImage(bmp, 0, 0);控件的DoubleBuffered属性n在V 2008中有4. 图像处理GDI+中的图像处理nGDI+中对图像处理提供了以下支持:n支持BMP、GIF、JPEG、PNG、TIFF、ICON等等广泛格式的图像文件n提供了用于多种光栅图像格式进行编码和解码的公共接口n支持为图像格式添加动态格式n支持对图像的像素进行多种处理,包括亮度、对比度、颜色平衡、模糊、消弱等n支持对图像进行旋转、剪切等操作n主要通过Image(抽象类)实现Bitmap类n从Image派生n可以处理B

16、MP、Jpeg、GIF、PNG等格式n构建nBitmap bt1 = new Bitmap(“c:1.bmp”);nBitmap bt2 = new Bitmap(bt1,200,300);nBitmap bt3;bt3.FromFile(“文件名称”);常见的处理方法n整个图像的处理nDrawImagen示例 ThumbnailTest.csn针对图像像素的处理Paint.NETnhttp:/www.eecs.wsu.edu/ 应用示例nSplatternDrawRunningCurvenScreenSavernGravityBall关于TransformnmyGraphics.DrawEl

17、lipse(myPen, 0, 0, 100, 50); nmyGraphics.ScaleTransform(1, 0.5f); myGraphics.TranslateTransform(50, 0, MatrixOrder.Append); myGraphics.RotateTransform(30, MatrixOrder.Append);nmyGraphics.DrawEllipse(myPen, 0, 0, 100, 50); nmyGraphics.Transfrom 是一个Matrix关于Path、关于渐变Brush图像的处理n图像文件bmp的格式n使用Lock及指针n几个例子nhttp:/ 问题与讨论

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


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