欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    C sharp图形图像编程基础.ppt

    • 资源ID:67342049       资源大小:99KB        全文页数:36页
    • 资源格式: PPT        下载积分:16金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要16金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    C sharp图形图像编程基础.ppt

    第7章 C#图形图像编程基础 本章主要介绍使用C#进行图形图像编程基础,其中包括GDI+绘图基础、C#图像处理基础以及简单的图像处理技术。7.1 GDI+绘图基础 7.2 C#图像处理基础 7.1 GDI+绘图基础 编写图形程序时需要使用GDI(Graphics Device Interface,图形设备接口),从程序设计的角度看,GDI包括两部分:一部分是GDI对象,另一部分是GDI函数。GDI对象定义了GDI函数使用的工具和环境变量,而GDI函数使用GDI对象绘制各种图形,在C#中,进行图形程序编写 时 用 到 的 是 GDI+(Graphics Device Interface Plus)版本,GDI+是GDI的进一步扩展,它使编程更加方便。7.1.1 GDI+概述 GDI+是微软在Windows 2000以后操作系统中提供的新的图形设备接口,其通过一套部署为托管代码的类来展现,这套类被称为GDI+的“托管类接口”,GDI+主要提供了以下三类服务:(1)(1)二维矢量图形:二维矢量图形:GDI+提供了存储图形基元自身信息的类(或结构体)、存储图形基元绘制方式信息的类以及实际进行绘制的类。(2)(2)图像处理:图像处理:大多数图片都难以划定为直线和曲线的集合,无法使用二维矢量图形方式进行处理。因此,GDI+为我们提供了Bitmap、Image等类,它们可用于显示、操作和保存BMP、JPG、GIF等图像格式。(3)(3)文字显示:文字显示:GDI+支持使用各种字体、字号和样式来显示文本。7.1.2 Graphics类 Graphics类封装了一个GDI+绘图图面,提供将对象绘制到显示到设备的方法。绘图程序的一般步骤:(1)创建Graphics对象 (2)使用Graphics对象的方法绘图、显示文本或处理图像。通常用三种方法创建Graphics对象:方法一方法一/窗体的Paint事件的响应方法private void form1_Paint(object sender,PaintEventArgs e)Graphics g=e.Graphics;也可以重载窗体的OnPaint方法protected override void OnPaint(PaintEventArgs e)Graphics g=e.Graphics;方法二方法二调用控件或窗体的CreateGraphics方法。例如:Graphics g=this.CreateGraphics();注意:注意:此时以this所代表的窗体为画布,也可以使用其他控件对象的引用,创建以控件对象为画布的Graphics对象。方法三方法三/建立Image对象,名为“g1.jpg”的图片位于当前路径下Image img=Image.FromFile(g1.jpg);/创建Graphics对象Graphics g=Graphics.FromImage(img);注意:注意:此时以文件“g1.jpg”为画布,使用g进行绘制图形时,其图形是绘制在文件“g1.jpg”上的。在创建了Graphics对象后,就可以用它开始绘图了,可以画线、填充图形、显示文本等等,其中主要用到的对象还有:1.Pen:定义用于绘制直线和曲线的对象。2.Color:表示 ARGB 颜色。3.Font:定义特定的文本格式,包括字体、字号和字形属性。4.Brush:定义用于填充图形形状(如矩形、椭圆、饼形、多边形和封闭路径)的内部的对象。5.Rectangle:存储一组整数,共四个,表示一个矩形的位置和大小。6.Point:表示在二维平面中定义点的、整数 X 和 Y 坐标的有序对。注意注意:各个对象的构造函数。7.1.3 常用画图对象 Color对象 在自然界中,颜色大都由透明度(A)和三基色(R,G,B)所组成。在GDI+中,通过Color结构封装对颜色的定义,Color结构中,除了提供(A,R,G,B)以外,还提供许多系统定义的颜色,如Pink(粉颜色),另外,还提供许多静态成员,用于对颜色进行操作。Color red=Color.FromArgb(255,0,0);Color red=Color.FromArgb(255,0,0);Color red=Color.FromArgb(120,255,0,0);Color red=Color.FromArgb(120,255,0,0);1画一个矩形 protected override void OnPaint(PaintEventArgs e)Graphics g=e.Graphics;Rectangle rect=new Rectangle(50,30,100,100);LinearGradientBrush lBrush=new LinearGradientBrush(rect,Color.Red,Color.Yellow,LinearGradientMode.BackwardDiagonal);g.FillRectangle(lBrush,rect);7.1.4 基本图形绘制举例 2画一个弧 protected override void OnPaint(PaintEventArgs e)Graphics g=e.Graphics;Pen pn=new Pen(Color.Blue);Rectangle rect=new Rectangle(0,0,100,100);g.DrawArc(pn,rect,12,84);7.1.4 基本图形绘制举例 3画线 protected override void OnPaint(PaintEventArgs e)Graphics g=e.Graphics;Pen pn=new Pen(Color.Blue);Point pt1=new Point(30,30);Point pt2=new Point(110,100);g.DrawLine(pn,pt1,pt2);7.1.4 基本图形绘制举例 4画椭圆 protected override void OnPaint(PaintEventArgs e)Graphics g=e.Graphics;Pen pn=new Pen(Color.Blue,1);Rectangle rect=new Rectangle(30,30,100,50);g.DrawEllipse(pn,rect);7.1.4 基本图形绘制举例 5输出文本 protected override void OnPaint(PaintEventArgs e)Font fnt=new Font(Verdana,16);Graphics g=e.Graphics;Pen pn=new Pen(Color.Blue,1);g.DrawString(GDI+World,fnt,new SolidBrush(Color.Red),50,50);7.1.4 基本图形绘制举例 6填充路径protected override void OnPaint(PaintEventArgs e)Graphics g=e.Graphics;g.FillRectangle(new SolidBrush(Color.White),ClientRectangle);GraphicsPath path=new GraphicsPath(new Pointnew Point(40,40),new Point(275,100),new Point(105,125),new Point(190,200),new Point(50,250),new Point(20,80),7.1.4 基本图形绘制举例 new byte(byte)PathPointType.Start,(byte)PathPointType.Bezier,(byte)PathPointType.Bezier,(byte)PathPointType.Bezier,(byte)PathPointType.Line,(byte)PathPointType.Line);PathGradientBrush pgb=new PathGradientBrush(path);pgb.SurroundColors=new Color Color.Green,Color.Yellow,Color.Red,Color.Blue,Color.Orange,Color.White;g.FillPath(pgb,path);7.1.4 基本图形绘制举例 7.1.5 画刷和画刷类型 Brush类型是一个抽象类,所以它不能被实例化,也就是不能直接应用,但是我们可以利用它的派生类,如:HatchBrush、SolidBrush和TextureBrush等。画刷类型一般在System.Drawing命名空间中,如果应用HatchBrush和GradientBrush画刷,需要在程序中引入System.Drawing.Drawing2D命名空间。画刷和画刷应用举例1SolidBrush(单色画刷)protected override void OnPaint(PaintEventArgs e)Graphics g=e.Graphics;SolidBrush sdBrush1=new SolidBrush(Color.Red);SolidBrush sdBrush2=new SolidBrush(Color.Green);SolidBrush sdBrush3=new SolidBrush(Color.Blue);g.FillEllipse(sdBrush2,20,40,60,70);/填充一个椭圆的内部Rectangle rect=new Rectangle(0,0,200,100);g.FillPie(sdBrush3,0,0,200,40,0.0f,30.0f);/填充扇形区域画刷和画刷应用举例PointF point1=new PointF(50.0f,150.0f);PointF point2=new PointF(100.0f,25.0f);PointF point3=new PointF(150.0f,40.0f);PointF point4=new PointF(250.0f,50.0f);PointF point5=new PointF(200.0f,100.0f);PointF curvePoints=point1,point2,point3,point4,point5;g.FillPolygon(sdBrush1,curvePoints);/填充多边形画刷和画刷应用举例2HatchBrush(阴影画刷)protected override void OnPaint(PaintEventArgs e)Graphics g=e.Graphics;HatchBrush hBrush1=new HatchBrush(HatchStyle.DiagonalCross,Color.Chocolate,Color.Lime);g.FillEllipse(hBrush1,20,20,150,150);画刷和画刷应用举例3TextureBrush(纹理画刷)private void Form1_Paint(object sender,PaintEventArgs e)Graphics g=e.Graphics;Bitmap bitmap=new Bitmap(D:mn.jpg);bitmap=new Bitmap(bitmap,this.ClientRectangle.Size);TextureBrush myBrush=new TextureBrush(bitmap);g.FillEllipse(myBrush,this.ClientRectangle);画刷和画刷应用举例4LinearGradientBrush和PathGradientBrush(渐变画刷)private void Form1_Paint(object sender,PaintEventArgs e)Graphics g=e.Graphics;LinearGradientBrush myBrush=new LinearGradientBrush(this.ClientRectangle,Color.Red,Color.White,LinearGradientMode.Vertical);g.FillRectangle(myBrush,this.ClientRectangle);画刷和画刷应用举例4LinearGradientBrush和PathGradientBrush(渐变画刷)private void Form1_Paint(object sender,PaintEventArgs e)Graphics g=e.Graphics;Point centerPoint=new Point(150,100);int R=60;GraphicsPath path=new GraphicsPath();path.AddEllipse(centerPoint.X-R,centerPoint.Y-R,2*R,2*R);PathGradientBrush brush=new PathGradientBrush(path);brush.CenterPoint=centerPoint;brush.CenterColor=Color.Red;画刷和画刷应用举例4LinearGradientBrush和PathGradientBrush(渐变画刷)brush.SurroundColors=new Color Color.Plum;g.FillEllipse(brush,centerPoint.X-R,centerPoint.Y-R,2*R,2*R);centerPoint=new Point(350,100);R=20;path=new GraphicsPath();path.AddEllipse(centerPoint.X-R,centerPoint.Y-R,2*R,2*R);path.AddEllipse(centerPoint.X-2*R,centerPoint.Y-2*R,4*R,4*R);画刷和画刷应用举例4LinearGradientBrush和PathGradientBrush(渐变画刷)path.AddEllipse(centerPoint.X-3*R,centerPoint.Y-3*R,6*R,6*R);brush=new PathGradientBrush(path);brush.CenterPoint=centerPoint;brush.CenterColor=Color.Red;brush.SurroundColors=new Color Color.Black,Color.Blue,Color.Green;g.FillPath(brush,path);7.2 C#图像处理基础 本节主要介绍C#图像处理基础知识以及对图像的基本处理方法和技巧,主要包括图像的加载、变换和保存等操作。7.2.1 C#图像处理概述 7.2.2 图像的输入和保存 7.2.3 图像的拷贝和粘贴 7.2.4 彩色图像处理 7.2.1 C#图像处理概述 1图像文件的类型 GDI+支持的图像格式有BMP、GIF、JPEG、EXIF、PNG、TIFF、ICON、WMF、EMF等,几乎涵盖了所有的常用图像格式,使用GDI+可以显示和处理多种格式的图像文件。2图像类 GDI+提供了Image、Bitmap和Metafile等类用于图像处理,为用户进行图像格式的加载、变换和保存等操作提供了方便。(1 1)ImageImage类:类:Image类是为Bitmap和Metafile的类提供功能的抽象基类。(2 2)MetafileMetafile类类:定义图形图元文件,图元文件包含描述一系列图形操作的记录,这些操作可以被记录(构造)和被回放(显示)。(3 3)BitmapBitmap类类:封装GDI+位图,此位图由图形图像及其属性的像素数据组成,Bitmap是用于处理由像素数据定义的图像的对象,7.2.2 图像的输入和保存 1图像的输入在窗体或图形框内输入图像有两种方式:(一)在窗体设计时使用图形框对象的Image属性输入;(二)在程序中通过打开文件对话框输入。private void button1_Click(object sender,EventArgs e)OpenFileDialog ofdlg=new OpenFileDialog();ofdlg.Filter=BMP File(*.bmp)|*.bmp;if(ofdlg.ShowDialog()=DialogResult.OK)Bitmap image=new Bitmap(ofdlg.FileName);pictureBox1.Image=image;7.2.2 图像的输入和保存 2图像的保存box1.Save(strFileName);private void button2_Click(object sender,EventArgs e)string str;Bitmap box1=new Bitmap(pictureBox1.Image);SaveFileDialog sfdlg=new SaveFileDialog();sfdlg.Filter=bmp 文件(*.bmp)|*.bmp|ALL File(*.*)|*.*;sfdlg.ShowDialog();str=sfdlg.FileName;box1.Save(str);7.2.2 图像的输入和保存 3图像格式的转换 sfdlg.Filter=jpg 文 件(*.jpg)|*.jpg|ALL File(*.*)|*.*;box1.Save(strFileName,System.Drawing.Imaging.ImageFormat.Jpeg);7.2.3 图像的拷贝和粘贴 图像拷贝和粘贴是图像处理的基本操作之一,通常有两种方法来完成图像的拷贝和粘贴:一种可以使用剪贴板拷贝和粘贴图像,一种使用AxPictureClip控件拷贝和粘贴图像。1使用剪贴板拷贝和粘贴图像【例7.8】使用剪贴板拷贝和粘贴图像。注意:注意:剪贴板的使用步骤。2使用AxPictureClip控件拷贝和粘贴图像【例7.9】使用AxPictureClip控件剪切和粘贴图像。注意:注意:在C#中第三方COM组件的使用方法。7.2.4 彩色图像处理 1图像的分辨率 2彩色图像变换灰度图像 3灰度图像处理 1图像的分辨率 所谓分辨率就是指画面的解析度,由多少像素构成,数值越大,图像也就越清晰。我们通常所看到的分辨率都以乘法形式表现的,例如800*600,其中“800”表示屏幕上水平方向显示的点数,“600”表示垂直方向的点数。图像分辨率越大,越能表现更丰富的细节。图像的分辨率决定了图像与原物的逼进程度,对同一大小的图像,其像素数越多,即将图像分割的越细,图像越清晰,称之为分辨率高,反之为分辨率低,分辨率的高低取决于采样操作。例如,对于一幅256*256分辨率的图像,采用变换的方法可以实现不同分辨率显示。【例例7.107.10】将将256*256*256256分辨率的图像变换为分辨率的图像变换为64*64*6464分辨率。分辨率。2彩色图像变换灰度图像 算法说明:将彩色图像像素的颜色值分解为三基色R、G、B,求其和的平均值,然后使用SetPixel方法以该平均值参数生成图像。【例例7.117.11】彩色图像生成灰度图像。彩色图像生成灰度图像。3灰度图像处理 算法说明:本例根据特定的输入输出灰度转换关系,增强了图像灰度,处理后图像的中等灰度值增大,图像变亮。注意:注意:本例中描述对比度改善的输入、输出灰度值对应关系的程序段为:略。【例例7.127.12】改善对比度。改善对比度。本章小结 本章主要讲述了C#下的图形图像基础知识,对图形的绘制,图像的处理和音频视频等多媒体的使用方法;在图片处理方面.NET提供了一个GDI+,功能十分强大,能完成对图像的全方位处理。

    注意事项

    本文(C sharp图形图像编程基础.ppt)为本站会员(s****8)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

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

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

    收起
    展开