- 1、本文档共13页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
利用Visual C#处理数字图像
标签:? 利用? visual? 2008-12-13 10:02
引言: 微软的新的.NET平台为开发者带来了许多新的诸如GDI+、Globalization之类的编程机制,同时还发明了一门全新的类似Java的编程语言-C#。对于这些新知识,我们应尽快了解、掌握并试图运用到实践项目中去,而通过实例学习的方法无疑是一个非常有效的途径。本文就通过一个简单的实例,向大家展示了在Visual C#中如何运用GDI+和Unsafe代码类等技术以实现简单的数字图像处理。
一.概述:
本文的实例是一个数字图像处理的应用程序,它完成的功能包括对图像颜色的翻转、对图像进行灰度处理和对图像进行增亮处理。该程序对图像进行处理部分的代码包含在一个专门的Filters类里面,通过调用该类里的静态成员函数,我们就可以实现相应的图像处理功能了。为实现图像处理,我们要对图像进行逐个象素处理。我们知道图像是由一个个的象素点组成的,对一幅图像的每个象素进行了相应的处理,最后整个图像也就处理好了。在这个过程中,我们只需对每个象素点进行相应的处理,在处理过程中却不需要考虑周围象素点对其的影响,所以相对来说程序的实现就变得简单多了。
由于GDI+中的BitmapData类不提供对图像内部数据的直接访问的方法,我们唯一的办法就是使用指针来获得图像的内部数据,这时我们就得运用unsafe这个关键字来指明函数中访问图像内部数据的代码块了。在程序中,我还运用了打开文件和保存文件等选项,以使我们的辛勤劳动不付之东流。
二.程序的实现:
1.打开Visual Studio.net,新建一个Visual C#的项目,在模板中选择Windows 应用程序即可,项目名称可自定(这里为ImageProcessor)。
2.为使窗体能显示图像,我们需要重载窗体的OnPaint()事件函数,在该函数中我们将一个图像绘制在程序的主窗体上,为了使窗体能显示不同尺寸大小的图像,我们还将窗体的AutoScroll属性设置为true。这样,根据图像的尺寸,窗体两边就会出现相应的滚动条。该函数的实现如下:
private void Form1_Paint(object sender, System.Windows.Forms.PaintEventArgs e){Graphics g = e.Graphics;g.DrawImage(m_Bitmap, new Rectangle(this.AutoScrollPosition.X, this.AutoScrollPosition.Y,(int)(m_Bitmap.Width), (int)(m_Bitmap.Height)));}
3.给主窗体添加一个主菜单,该主菜单完成了一些基本的操作,包括打开文件、保存文件、退出、翻转操作、灰度操作、增亮操作等。前面三个操作完成图像文件的打开和保存以及程序的退出功能,相应的事件处理函数如下:
private void menuItemOpen_Click(object sender, System.EventArgs e){OpenFileDialog openFileDialog = new OpenFileDialog();openFileDialog.Filter = Bitmap文件(*.bmp)|*.bmp|Jpeg文件(*.jpg)|*.jpg|所有合适文件(*.bmp/*.jpg)|*.bmp/*.jpg;openFileDialog.FilterIndex = 2 ;openFileDialog.RestoreDirectory = true ;if(DialogResult.OK == openFileDialog.ShowDialog()){m_Bitmap = (Bitmap)Bitmap.FromFile(openFileDialog.FileName, false);this.AutoScroll = true;this.AutoScrollMinSize=new Size ((int)(m_Bitmap.Width),(int)m_Bitmap.Height));this.Invalidate();}}
其中,m_Bitmap为主窗体类的一个数据成员,声明为private System.Drawing.Bitmap m_Bitmap;(注:因为程序中用到了相关的类,所以在程序文件的开始处应添加using System.Drawing.Imaging;)同时,在该类的构造函数中,我们必须先给它new一个Bitmap对象:m_Bitmap = new Bi
您可能关注的文档
- 例说解析法在向量问题中的应用.pdf
- 例说配凑法在解题中的应用.pdf
- 例谈多元函数条件最值的解法——由一道江苏数学联赛初赛题谈起.pdf
- 例谈分段函数问题中的几种特殊图象.pdf
- 例谈解题后的思考与探究.pdf
- 例谈超越方程问题的解题技巧.pdf
- 供应商选择评价及再评价制度.doc
- 依概率收敛与依分布收敛的关系.pdf
- 供水泵站的泵组及变压器常见异常与处理.pdf
- 便条题型分析及写作技巧.doc
- 专题13 风云变幻—近代以来的国际关系与国际格局的演变(课件)-2025年高考历史二轮复习讲练测(新高考通用).pptx
- 3.2.3 呼吸作用-2024-2025学年七年级生物下册同步教学课件(人教版2024).pptx
- 2025春沪科版初中物理八年级下册教学课件 第八章 第4节 流体压强与流速的关系.pptx
- 2024-2025学年七年级数学下册举一反三系列(沪科版2024)专题8.9 整式乘法与因式分解全章专项复习【3大考点10种题型】(举一反三)(沪科版2024)(解析版).docx
- Unit 1(复习课件) -2024-2025学年英语五年级下册单元速记巧练系列(人教PEP版).pptx
- 3.1.1 种子的萌发(第二课时)-2024-2025学年七年级生物下册同步教学课件(人教版2024).pptx
- 3.2.1 水的利用与散失-2024-2025学年七年级生物下册同步教学课件(人教版2024).pptx
- 6.5 国家司法机关(教学课件)-2024-2025学年八年级道德与法治下册高效课堂同步教学课件(统编版).pptx
- 2025春沪科版初中物理八年级下册教学课件 第九章 第4节 物体的浮与沉 第1课时.pptx
- 专题09 多元共生—古代世界文明的多样性与区域扩展(课件)-2025年高考历史二轮复习讲练测(新高考通用).pptx
文档评论(0)