.NET Windows编程系列(10):.NET图像处理(上)
摘要:
在.NET编程中,由于GDI+的出现,使得对于图像的处理功能大大增强。在本节介绍如何在.NET中显示图像、如何对图像进行旋转和剪切等物理变换,并且我们将实现一个简易的图像处理程序。
注:本系列节选于MSDN Webcasts上邵志东老师的《 .NET Windows编程系列课程》,在我的Blog中整理发表,方便大家一同参考!此系列相关资料请到这里下载。
本节主要内容:
GDI+中的图像处理
图像物理变换
坐标系和变换
一、GDI+中的图像处理
GDI+中对图像处理提供了以下支持:
支持BMP、GIF、JPEG、PNG、TIFF、ICON等等广泛格式的图像文件。
提供了用于多种光栅图像格式进行编码和解码的公共接口。
支持为图像格式添加动态格式。
支持对图像的像素进行多种处理,包括亮度、对比度、颜色平衡、模糊、消弱等。
支持对图像进行旋转、剪切等操作。
主要通过Image(抽象类)实现。
Bitmap类
从Image派生,可以处理BMP、Jpeg、GIF、PNG等格式
1.构建
Bitmap bt1 = new Bitmap(“c:\\1.bmp”);
Bitmap bt2 = new Bitmap(bt1,200,300);
Bitmap bt3; bt3.FromFile(“文件名称”);
2.Bitmap类常用属性
|
名称
|
描述
|
|
Height
|
图像的高度
|
|
HorizontalResolution
|
图像水平方向上的分辨率
|
|
Palette
|
图像所使用的调色板
|
|
PhysicalDimension
|
图像的物理维度
|
|
PixelFormat
|
图像像素的格式
|
|
RawFormat
|
图像的存储格式
|
|
Size
|
图像的尺寸
|
|
VerticalResolution
|
图像垂直方向上的分辨率
|
|
Width
|
图像的宽度
|
3.Bitmap类常用方法
|
名称
|
描述
|
|
Dispose
|
释放图像资源
|
|
GetBounds
|
获得图像对象的矩形边界
|
|
GetFrameCount
|
得到指定维度上的边框数目
|
|
GetPropertyItem
|
得到图像的属性信息
|
|
GetThumbnailImage
|
得到缩略图
|
|
RemovePropertyItem
|
删除图像对象的属性信息
|
|
RotateFlip
|
对图像进行旋转或翻转
|
|
Save
|
按照指定格式保存图像
|
|
SaveAdd
|
添加编码信息后保存图像
|
|
SelectActiveFrame
|
选择图像的活动边界
|
ImageFormat
Bmp:获取位图图像格式(BMP)。
Emf:获取增强型Windows 图元文件图像格式(EMF)。
Exif:获取可交换图像文件(Exif) 格式。
Gif:获取图形交换格式(GIF) 图像格式。
Guid:获取表示此ImageFormat对象的Guid结构。
Icon:获取Windows 图标图像格式。
Jpeg:获取联合图像专家组(JPEG) 图像格式。
MemoryBmp:获取内存位图图像格式。
Png:获取W3C 可移植网络图形(PNG) 图像格式。
Tiff:获取标签图像文件格式(TIFF) 图像格式。
Wmf:获取Windows 图元文件(WMF) 图像格式。
DEMO1:图像的转换
二、图像物理变换
Image.RotateFlip方法
Rotate180FlipNone:指定不进行翻转的180 度旋转。
Rotate180FlipX:指定后接水平翻转的180 度旋转。
Rotate180FlipXY:指定后接水平翻转和垂直翻转的180 度旋转。
Rotate180FlipY:指定后接垂直翻转的180 度旋转。
Rotate270FlipNone:指定不进行翻转的270 度旋转。
Rotate270FlipX:指定后接水平翻转的270 度旋转。
Rotate270FlipXY:指定后接水平翻转和垂直翻转的270 度旋转。
Rotate270FlipY:指定后接垂直翻转的270 度旋转。
Rotate90FlipNone:指定不进行翻转的90 度旋转。
Rotate90FlipX:指定后接水平翻转的90 度旋转。
Rotate90FlipXY:指定后接水平翻转和垂直翻转的90 度旋转。
Rotate90FlipY:指定后接垂直翻转的90 度旋转。
RotateNoneFlipNone:指定不进行旋转和翻转。
RotateNoneFlipX:指定没有后跟水平翻转的旋转。
RotateNoneFlipXY:指定没有后跟水平和垂直翻转的旋转。
RotateNoneFlipY:指定没有后跟垂直翻转的旋转。
DEMO2:图像的变换
三、坐标系和变换
坐标系
GDI+使用三个坐标空间:世界、页面和设备。
世界坐标是用于建立特殊图形世界模型的坐标系,也是在.NET Framework 中传递给方法的坐标系。
页面坐标系是指绘图图面(如窗体或控件)使用的坐标系。
设备坐标系是在其上进行绘制的物理设备(如屏幕或纸张)所使用的坐标系。
坐标系和变换
myGraphics.TranslateTransform(100, 50); myGraphics.DrawLine(myPen, 0, 0, 160, 80);
Graphics变换相关方法
ResetTransform
TranslateTransform:平移
RotateTransform:旋转
ScaleTransform:缩放
使用Matrix 类进行变换
Matrix.Rotate方法:顺时针按照指定角度旋转
Matrix.Scale方法:缩放
Matrix.Translate方法:平移
DEMO3:坐标系变换示例
DEMO4:图像变换
本系列文章快速导航:
posted @ 2007-11-06 11:24
李永京 阅读(1079)
评论(0) 编辑 收藏 所属分类:
WinForm