使用 GDI+ 编程与使用 GDI 编程的几点不同之处。

设备上下文、句柄和图形对象

如果您使用过GDI(Windows 的以前版本中包括的图形设备接口)编写程序,就会熟悉设备上下文的知识。设备上下文是 Windows 使用的一种结构,用于存储与特殊显示设备的功能和指定如何在该设备上绘制项目的属性相关的信息。用于视频显示的设备上下文还与显示的特定窗口关联。首先,您获得一个设备上下文的句柄 (HDC),然后将该句柄作为参数传递至实际进行绘制的 GDI 函数。您还可将此句柄作为参数传递给获取或设置设备上下文属性的 GDI 函数。

使用 GDI+,您不需要再使用句柄或设备上下文,而是只需创建一个 Graphics 对象然后以您熟悉的面向对象样式myGraphicsObject.DrawLine(parameters) 调用其方法正如设备上下文位于 GDI 的核心,Graphics 对象也位于 GDI+ 的核心。设备上下文和 Graphics 对象的作用相似,但在使用设备上下文(GDI) 的、基于句柄的编程模式和使用 Graphics 对象 (GDI+) 的、面向对象的编程模型之间存在一些基本的差异。

Graphics 对象(像设备上下文一样)与屏幕上的特定窗口关联,并具有指定如何绘制项目的属性(例如,SmoothingModeTextRenderingHint)。但是,Graphics对象不受钢笔、画笔、路径、图像或字体的约束,这与设备上下文不同。例如,使用设备上下文绘制线条之前,必须先调用 SelectObject 以使钢笔对象和设备上下文关联。这是指将钢笔选入设备上下文中。在设备上下文中绘制的所有线条均使用该钢笔,直到您选择另一支不同的钢笔为止。在 GDI+ 中,将 Pen 对象作为参数传递给 Graphics 类的 DrawLine 方法。您可以在一系列 DrawLine 调用的每个调用中使用不同的Pen 对象,而不必使给定的 Pen 对象与 Graphics 对象关联。