C#图像的平移和镜像处理程序设计(5)
时间:2017-06-01 11:15 来源:毕业论文 作者:毕业论文 点击:次
WinForm编程 WinForm是.NET开发平台中对Windows Form的一种称谓。.NET为开发WinForm的应用程序提供了丰富的类库。这些WinForm类库支持RAD(快速应用程序开发),它们被封装在一个命名空间之中,这个命名空间就是System.Windows.Forms。在该命名空间中定义了许多类,在开发基于.NET的GUI应用程序的时候,就是通过继承和扩展这些类才使得程序有着多样的用户界面。 一个典型的Windows窗体应用程序至少应该包含一个窗体。WinForm应用程序中通常有一个窗体作为主窗体,它是该应用程序生命期内可能显示的其他窗体的父窗体或所有者,主菜单、工具栏、状态栏等都显示于该窗体内。当主窗体被关闭时,程序应该随即退出。 GDI+ GDI+是GDI(图形设备接口,Graphics Device Interface)的新版本,是Microsoft在.Net环境下提供的图形设备接口,可以认为它是GDI的.Net版。与.NET Framework中的图形设备接口进行交互的入口。它使程序开发人员可以编写出与设备无关的受控应用程序,它的设计目的是提高较高的性能、方便的使用以及对多语言的支持。如果要编写与监视器、打印机或文件等图行设备进行交互的.NET应用程序,那么就必须使用GDI+。 GDI+使得应用程序开发人员在输出屏幕和打印机信息的时候,无需考虑具体显示设备的细节,它们只需调用GDI+库输出的类的一些方法即可完成图形操作,真正的绘图工作由这些方法交给特定的设备程序来完成,GDI+使得图形硬件和应用程序相互隔离,从而使开发人员编写与设备无关的应用程序变得非常容易。 GDI+在GDI的基础上提供了明显地改进。最主要的特点是在GDI+中,没有了句柄或设备上下文的概念,它被Graphics对象取代。Graphics类提供了绘制不同图形对象的方法和属性,而且更易于使用。 C#数字图像处理的3种方法 提取像素法: 该方法使用的是GDI+中的Bitmap.GetPixel和Bitmap.SetPixel方法。为了将位图的颜色设置为灰度或其他颜色,就需要使用GetPixel来读取当前像素的颜色,再计算灰度值,最后使用SetPixel来应用新的颜色。 内存法: 该方法就是把数据直接复制到内存中,这样就使程序的运行速度大大提高。 指针法: 该方法与内存法相似,开始都是通过LockBits方法来获取位图的首地址。但该方法更简洁,直接应用指针对位图进行操作。 为了保证类型安全,在默认情况下,C#是不支持指针运算的,因为使用指针会带来相关的风险。所以C#只允许在特别标记的代码块中使用指针。通过使用unsafe关键字,可以定义可使用指针的不安全上下文。 BMP图像结构 BMP(全称Bitmap)是Window操作系统中的标准图像文件格式,可以分成两类:设备相关位图(DDB)和设备无关位图(DIB),使用非常广。它采用位映射存储格式,除了图像深度可选以外,不采用其他任何压缩,因此,BMP文件所占用的空间很大。BMP文件的图像深度可选lbit、4bit、8bit及24bit。BMP文件存储数据时,图像的扫描方式是按从左到右、从下到上的顺序。由于BMP文件格式是Windows环境中交换与图有关的数据的一种标准,因此在Windows环境中运行的图形图像软件都支持BMP图像格式。 BMP文件由文件头、位图信息头、颜色信息和图形数据四部分组成。 BMP文件头(14字节) BMP文件头数据结构含有BMP文件的类型、文件大小和位图起始位置等信息。 其结构定义如下: typedef struct tagBITMAPFILEHEADER { WORD bfType; // 位图文件的类型,必须为BM(1-2字节) DWORD bfSize; // 位图文件的大小,以字节为单位(3-6字节) (责任编辑:qin) |