C#图像的平移和镜像处理程序设计(5)_毕业论文

毕业论文移动版

毕业论文 > 计算机论文 >

C#图像的平移和镜像处理程序设计(5)


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)