图形设备接口(GDI)

图形设备接口(GDI,Graphics Device Interface)负责在显示器和打印机上显示图形。GDI 是由几
百个函数和一些相关的数据类型、宏和结构构成的。
Windows 98/NT 中的图形主要由GDI32.DLL 动态链接库输出的函数来处理。在Windows 98 中,
这个GDI32.DLL 实际是利用16 位GDI.EXE 动态链接库来执行函数。在Windows NT 中,GDI.EXE
只用于16 位的程序。
因为PC 兼容机种上可以连接许多种不同的图形图像设备,所以GDI 的主要目的之一是支持与设
备无关的图形。Windows 程序应该能够毫无困难地在Windows 支持的任意一种图形输出设备上执行,
GDI 通过将程序和不同输出设备的特性隔离开来的方法达到这一目的。
当用户想在一个图形输出设备上绘图时,首先必须获得一个设备内容的句柄。将句柄传回给程序
时,Windows 就给了用户使用设备的权限,然后在GDI 函数中将这个句柄作为一个参数,用来标识在
其上进行绘图的设备。
设备内容中包含许多确定GDI 函数如何在设备上工作的属性,这些属性允许传递给GDI 函数的
参数只包含起始坐标或者尺寸信息,而不必包含Windows 在设备上显示对象时需要的所有其他信息。
例如,当调用TextOut 时,只需要在函数中给出设备内容句柄、起始坐标、文字和文字的长度,而不
必指定字体、文字颜色、文字后面的背景色彩以及字符间距。因为这些属性都是设备内容的一部分。

 设备内容
Windows 提供了几种取得设备内容句柄的方法。如果在处理一个消息时取得了设备内容句柄,应
该在退出窗口函数之前释放它。一旦释放了句柄,它就不再有效了。但是对于打印机设备内容句柄,
规则就没有这么严格。
最常用的取得并释放设备内容句柄的方法是,在处理WM_PAINT 消息时,使用BeginPaint 和
EndPaint:

hdc = BeginPaint (hwnd, &ps) ;
…………
…………
EndPaint (hwnd, &ps) ;
原文地址:https://www.cnblogs.com/vinsonLu/p/3614088.html