设备上下文是一种 Windows 数据结构,其中包含有关设备(如显示器或打印机)绘图属性的信息。 所有绘图调用都通过设备上下文对象进行,该对象封装用于绘制线条、形状和文本的 Windows API。 设备上下文允许在 Windows 中进行独立于设备的绘图。 设备上下文可用于绘制到屏幕、打印机或图元文件。
CPaintDC 对象封装 Windows 的常见成语,调用 BeginPaint
函数,然后在设备上下文中绘图,然后调用 EndPaint
函数。
CPaintDC
构造函数BeginPaint
调用你,析构函数调用 EndPaint
。 简化的过程是创建 CDC 对象、绘制并销毁 CDC
对象。 在框架中,即使是此过程的大部分作都是自动化的。 具体而言,函数 OnDraw
传递了已准备好的 CPaintDC
函数(通过 OnPrepareDC
),你只需将其绘制到其中。 框架会销毁它,基础设备上下文在从对函数的调用 OnDraw
返回时释放到 Windows。
CClientDC 对象封装使用仅表示窗口工作区的设备上下文。
CClientDC
构造函数调用函数GetDC
,析构函数调用函数ReleaseDC
。
CWindowDC 对象封装表示整个窗口的设备上下文,包括其帧。
CMetaFileDC 对象将绘图封装到 Windows 图元文件中。 与传递给的 CPaintDC
相比 OnDraw
,在这种情况下,必须自行调用 OnPrepareDC 。
鼠标绘图
框架程序中的大多数绘图(因此大多数设备上下文工作)是在视图的成员函数中完成的 OnDraw
。 但是,你仍然可以将设备上下文对象用于其他目的。 例如,若要为视图中的鼠标移动提供跟踪反馈,需要直接绘制到视图中,而无需等待 OnDraw
调用。
在这种情况下,可以使用 CClientDC 设备上下文对象直接绘制到视图中。