Windows GDI详解:设备描述表与图形设备接口

需积分: 16 0 下载量 5 浏览量 更新于2024-08-24 收藏 911KB PPT 举报
"删除画笔-C++图形设备" 在Windows编程中,C++的图形设备接口(GDI)是一个关键部分,它允许程序员在各种物理设备上进行绘图操作,包括显示器和打印机。GDI的核心思想是设备无关性,这意味着应用程序并不直接与硬件交互,而是通过设备描述表(Device Context, DC)进行间接操作。DC是一个抽象层,它描述了一个特定的物理设备,并且包含了关于该设备的所有信息,如分辨率、颜色深度等。 设备描述表DC是一个结构,它包含了设备的当前状态信息,如绘图颜色、字体、刷子、画笔等。在Windows应用程序中,首先需要通过调用`GetDC`函数获取与窗口或设备关联的DC,然后可以使用这个DC来进行绘图操作。例如,在给定的代码中,`hdc=GetDC(hWnd);`获取了与窗口`hWnd`关联的DC。之后,可以使用`hdc`来调用绘图函数,如`Rectangle(hdc,0,0,200,200);`和`Ellipse(hdc,0,0,200,-200);`。完成绘图后,应调用`ReleaseDC(hWnd,hdc);`释放DC,以便系统可以回收资源。 在GDI中,绘图工具包括画笔、刷子、字体等,它们可以设置颜色和样式。例如,删除画笔的操作通常会用到`DeleteObject`函数,这是一个通用的GDI函数,可以用于删除任何类型的GDI对象,包括画笔、刷子、字体等。在使用完一个画笔后,调用`DeleteObject(hPen);`来释放内存,其中`hPen`是画笔的句柄。 映像模式是GDI中的一个重要概念,它定义了如何将逻辑坐标转换为物理坐标。Windows提供了8种映像模式,包括MM_TEXT、MM_LOENGLISH、MM_HIENGLISH、MM_LOMETRIC、MM_HIMETRIC、MM_TWIPS、MM_ISOTROPIC和MM_ANISOTROPIC。默认的映像模式是MM_TEXT,其中逻辑坐标直接对应于像素,而Y轴向下增加。其他模式则涉及不同的单位系统,如英寸、毫米或twips(1/1440英寸),并且Y轴可能向上增加。例如,`SetMapMode(hdc,MM_LOENGLISH);`会将映像模式设置为以0.01英寸为单位,且Y轴向上增加。 在编程时,选择合适的映像模式可以简化绘图过程,因为程序员可以在一个统一的逻辑坐标系统中工作,而不必关心不同设备的实际物理坐标。这使得代码更具有可移植性,能够适应不同的显示设备和打印输出。 C++中的GDI是Windows应用程序进行图形绘制的核心工具集,它通过设备描述表实现了设备无关性,同时提供了丰富的绘图函数和映像模式,使开发者能够灵活地创建复杂的图形用户界面和图形内容。在实际编程中,正确地使用DC、绘图工具和映像模式是创建高质量Windows应用程序的关键。