MFC的绘图都是通过DC(Device Context)作为中间过程实现的,这样做是为了解决输出设备多种多样而为编程带来的复杂性,GDI就是使最终的显示隐蔽起来,使编程人员不用关心具体的显示方法。
所以,要想进行图形图像的输出,就要建立或者获得DC才能进行输出。
CDC是CClientDC、CWindowDC、CPaintDC的基类。CPaintDC只在响应WM_PAINT消息时使用,CClientDC和CWindowDC则可以在其他地方使用,这两个类的区别在于前者只可以绘制客户区,而后者则可以绘制整个窗口。
一般,对屏幕进行图形图像输出,都不是直接获得相应窗口的DC来输出图像,而是新建一个和目标窗口DC想兼容的内存DC,先在内存DC上绘制完成后,使用bitblt或者stretchblt一次性移送到屏幕上,这就是显示的缓冲技术。(对于位图是不能直接选入非内存DC,所以必须利用内存DC)
CPen CBrush CFont CBitmap CRng CPalette是DC的六个可选入对象,利用这些对象可完成很多作图操作。