Windows GDI绘图:映像模式与设备描述表解析

需积分: 16 0 下载量 36 浏览量 更新于2024-08-24 收藏 911KB PPT 举报
"本文主要介绍了Windows的图形设备接口(GDI)以及映像模式在C++编程中的应用。在Windows操作系统中,GDI提供了一组用于控制图形设备的函数,使得应用程序可以与不同硬件设备进行图形和文本的绘制。设备描述表(DC)是连接应用程序与硬件的关键,它是一个逻辑描述,用来描述物理设备的特性。 在GDI中,坐标空间分为逻辑坐标和物理坐标。逻辑坐标是绘图函数使用的抽象坐标系统,而物理坐标则对应于实际硬件设备上的位置,如鼠标事件返回的坐标。映像模式决定了如何将逻辑坐标转换为物理坐标,这样在不同的设备上,程序可以使用相同的坐标进行绘图。 映像模式有8种类型,包括缺省的MM_TEXT模式,其中像素是基本单位,Y轴向下增加;MM_LOENGLISH、MM_HIENGLISH分别以0.01英寸和0.001英寸为单位,Y轴向上增加;MM_LOMETRIC和MM_HIMETRIC使用毫米为单位,同样Y轴向上增加;MM_TWIPS以1/1440英寸为单位,Y轴也向上增加;最后,MM_ISOTROPIC和MM_ANISOTROPIC允许自定义比例,使X和Y轴可以独立缩放。 在给定的代码示例中,通过调用`SetMapMode(hdc, MM_LOENGLISH);`可以将映像模式设置为MM_LOENGLISH,这意味着接下来的绘图操作会使用0.01英寸为单位,而不是默认的像素。不使用`SetMapMode`,程序会使用默认的MM_TEXT模式。因此,当绘制矩形和椭圆时,它们的大小和位置会根据所选择的映像模式有所不同。`Rectangle(hdc, 0, 0, 200, 200)`和`Ellipse(hdc, 0, 0, 200, -200)`将会根据当前的映像模式解析这些参数,并在设备上下文(hdc)对应的设备上绘制相应的图形。`ReleaseDC(hWnd, hdc)`确保在完成绘图后释放对设备的访问。 通过改变映像模式,开发者可以在不同的物理设备上保持一致的视觉效果,或者根据需要调整图形的比例。例如,如果一个应用程序需要在高分辨率的屏幕上显示与低分辨率屏幕相同大小的图形,可以使用适当的映像模式来实现。理解并熟练掌握这些映像模式对于创建跨平台的、适应不同硬件的Windows应用程序至关重要。"