C#并不被编译成为能够直接在计算机上执行的二进制本地代码。与Java类似,它被编译成为中间代码,然后通过.NET Framework的虚拟机执行。所有的.NET编程语言都被编译成这种被称为MSIL的中间的代码。因此,虽然最终的程序在表面上仍然与传统意义上的可执行文件都具有“.exe”的后缀名。但实际上,如果计算机上没有安装.NET Framework,那么这些程序将不能被执行。在程序执行时,.NET Framework将中间代码翻译成为二进制机器码,从而使它得到正确的运行。最终的二进制代码被存储在一个缓冲区。所以一旦程序使用了相同的代码,那么将会调用缓冲区中的版本。这样,如果一个.NET 程序第二次被运行,那么这种编译不需要进行第二次,速度明显加快。
WinForm与GDI+编程
WinForm是.NET平台开发中对Windows Form的一种称谓。.NET为开发WinForm的应用程序提供了丰富的类库。这些Winform类库支持RAD(快速应用程序开发),它们被封装在一个命名空间之中,这个命名空间就是System.Windows.Forms。在该命名空间中定义了许多类,在开发基于.NET的GUI应用程序的时候,就是通过继承和扩展这些类才使得程序有着多样的用户的界面。
一个典型的Windows窗体应用程序生命期内可能显示的其他窗体的父窗体或所有者,主菜单、工具栏、状态栏等都是显示于该窗体内。当主窗体被关闭时,程序应该随即被退出。
GDI+是与.NET Framework中的图形设备接口进行交互的入口。它使程序开发人员可以编写出与设别无关的受控应用程序,它的设计目的是要提供较高的性能、方便的使用以及对多语言的支持。如果要编写与监视器、打印机或文件等图形设别进行交互的.NET应用程序,那么就必须使用GDI+。
GDI+使得应用程序开发人员在输出屏幕和打印机信息的时候,无需考虑具体显示设备的细节,他们只需调用GDI+库输出的类的一些方法即可完成图形操作,真正的绘图工作由这些方法交给特定的设备驱动程序来完成,GDI+使得图形硬件和应用程序相互隔离,从而使开发人员编写与设备无关的应用程序变得非常容易。
GDI+在GDI的基础上提供了明显的改进。最主要的特点是在GDI+中,没有了句柄或设备上下文的概念,它被Graphics对象取代。Graphics类提供了绘制不同图形对象的方法和属性,而且更易于使用。
在Visual C#.NET中,所有图像图像都包含在以下的命名空间中。
System.Drawing命名空间
提供了对GDI+基本图形功能的访问,主要有Graphics类、Bitmap类、从Brush类继承的类、Font类、Icon类、Pen类、Color类等。
System.Drawing.Drawing2D命名空间
Visual C#.NET中没有3D的命名空间,这是因为3D的效果实际上是通过2D的图案体现的。System.Drawing.Drawing2D命名空间提供了高级的二文和矢量图形功能。主要有梯度型画刷、Matrix类和GraphicsPath(图形路径)类等。
System. Drawing.Imaging命名空间
提供了高级GDI+图像处理功能。
System.Drawing.Text命名空间
提供了高级GDI+字体和文本排版功能。
但是,需要注意的一点是,要进行图形图像处理,必须首先创建Graphics对象,然后才能利用它进行各种图画操作。这就需要先在窗体或控件中使用一个Paint事件。
BMP图像
BMP取自位图bitmap的缩写,它可以分成两类:设备相关位图(DDB)和设备无关位图(DIB),使用非常广。是微软视窗图形子系统,它内部使用的一种位图图形格式,它是微软视窗平台上的一个简单的图形文件格式。BMP图像通常保存的颜色深度有2(1位)、16(4位)、256(8位)、65536(16位)和1670万(24位)种颜色(其中位即bit)。8位图像可以是索引彩色图像外,也可以是灰阶图像。表示透明的alpha通道也可以保存在一个类似于灰阶图像的独立文件中。带有集成的alpha通道的32位版本已经随着Windows XP出现,它在视窗的登录和主题系统中都有使用。 C#彩色图像的伪色空间处理程序设计(6):http://www.751com.cn/jisuanji/lunwen_1742.html