GDI+由.NET 基类集组成,这些基类可用于在屏幕上完成定制绘图,能把合适的指令发送到图形
设备的驱动程序上,确保在监视器屏幕上显示正确的输出(或打印到硬拷贝中)。
一、理解绘图规则
1、 GDI 和 GDI+
一般来说,Windows 的一个优点(实际上是现代操作系统的一个优点)是它可以让开发人员不考虑特定设备
的细节,例如:不需要理解硬盘设备驱动程序,只需在相关的.NET 类中调用合适的方法(以前是等价的
WindowsAPI函数),就可以编程读写磁盘上的文件。这些规则也适用于绘图,计算机在屏幕绘图时,把指
令发送给视频卡,问题是市面上有几百种不同的视频卡,大多数有不同的指令集和功能,如果把这个考虑在
内,在应用程序中为每一个视频卡驱动程序编写在屏幕上绘图的特定代码,这样的应用程序就根本不可能编
写出来。这就是为什么在 Windows 最早期的版本中就有 WindowsGraphicalDeviceInterface(GDI)的原因。
GDI+提供了一个抽象层,隐藏了不同视频卡之间的区别,这样就可以调用 WindowsAPI 函数完成指定的任务
了,GDI 会在内部指出在运行特定的代码时,如何让客户机的视频卡完成要绘制的图形,GDI 还可以完成其他
任务,大多数计算机都有多个显示设备,例如:监视器和打印机,GDI 成功的使应用程序所使用的打印机看
起来和屏幕一样,如果答应某些东西,而不是显示它们,只需告诉系统输出的设备是打印机,再用相同的方
式调用相同的 WindowsAPI 函数即可。
可以看出,DC(设备环境)是一个功能非常强大的对象,在 GDI 下,所有的绘图工作都必须通过设备环境来
完成。DC 甚至可用于不涉及在屏幕或其他硬件设备上绘图的其他操作,例如在内存中修改图像。
GDI 给开发人员提供了一个相当高级的 API,但它仍是一个基于旧的 WindowsAPI 并且有 C 语言风格的 API,
所以使用起来很是不方便,GDI+在很大程度上是 GDI 和应用程序之间的一层,提供了更直观、基于继承性的
对象模型,尽管 GDI+基本上是 GDI 的一个包装器,但 Microso 已经能通过 GDI+提供新功能了,并宣称它有
一些性能上的改进。
2、 GDI+基类的主要命名空间
System.Drawing
包含与基本绘图功能有关的大多数类、结构、枚举和委托
System.Drawing.Drawing2D
为大多数高级 2D 和矢量绘图操作提供了支持,包括消除锯齿、几
何转换、和图像路径。
System.Drawing.Imaging
帮助处理图像(位图、GIF 文件等)的各种类
System.Drawing.Prin'ng
把打印机或打印预览窗口作为输出设备时使用的类
System.Drawing.Design
一些预定义的对话框、属性表和其他用户界面元素,与在设计期间
拓展用户界面相关。
System.Drawing.Text
对字体和字体系列执行更高级操作的类
二、下面用几个示例说明如何在应用程序中绘图
1、 使用 VS2005 新建一个 Windows 窗体,并在启动时在构造函数中绘制它。
启动 VS2005,创建一个 Windows 应用程序,首先把窗体背景色设置为白色,把这行代码放在
InitializeComponent()方法中,这样 VS2005 就会识别该命令,并改变窗体的设计视图的外观。展开
Form1.cs 文件旁边的加好,就可以看到 Form1.Designer.cs 文件,在这个文件中,包含了
InitializeComponent()方法。现修改如下:
private void InitializeComponent()
{
this.SuspendLayout();
评论2