在windows下绘图可以借助一些图形库用DrawLine和DrawCirccle这样的程序来画些基本图形元素,但是一旦出现新的标准就意味着要想办法支持最新的硬件,即使用升级版的图形库,将新代码加入自己的程序或给新视卡写驱动程序。对图形编程人员来说,其工作平台一直在变动,为了使程序与打印机和其他输出设备有适当的接口,还要做大量的工作。
通过给微机平台引入与硬件设备无冠的图形输出模式,windows改变了上述的被动局面,在windows中只要有相应的windows驱动程序,您所编写的代码就可以在任何图像适配器上运行,将输出发送到屏幕上的代码同样可用于打印机和其他硬拷贝设备上。也就是说,这种方法的优点就是不需要去为程序运行的具体硬件环境费心,而是去花时间编写应用程序代码上,也不需要第三方图形库。而windows中负责图形输出的是Graphics Device Interface(图形设备结构,简称GDI),能够实现一些简单的绘图操作。
windows程序在屏幕、打印机或其他输出设备上画图时,它并不是将像素直接输出到设备上,而是将图绘制到由设备描述表(DC)表示的逻辑意义上的“显示平面”上去。打个比方就是先在一块画布上画图,然后将画布贴到设备上。
画图流程是:1、画图之前windows程序从GDI获取设备描述表句柄;2、每次调用GDI输出函数时将句柄返回给GDI。若无有效的设备描述表句柄,则GDI不会画第一个像素点。
设备描述表类
MFC的CDC类将windows设备描述表和获取设备描述表句柄的GDI函数就近封装在一起,CDC的派生类则代表不同类