2.1Windows GDI
Windows中负责图形输出的是Graphics Device Interface(图形设备接口),简称GDI。
CDC::DrawText :将文本输出到窗口。
2.1.1MFC设备描述表类
CWnd::GetDC :在MFC应用程序中获取设备描述表的指针,返回指向表示Windows设备描述表的CDC对象的指针。
CWnd::ReleaseDC :CWnd::GetDC释放获取的设备描述表指针。
CWnd::GetWindowDC :获取允许在窗口内任一地方画图的设备描述表DC指针(与只允许在窗口客户区画图的设备描述表CDC指针不同)。
例子:
CDC* pDC = GetDC();
//Do some drawing
ReleaseDC(pDC);
若同样的程序代码出现在OnPaint处理程序中,则需用CWnd::BeginPaint和CWnd::EndPaint分别代替GetDC和ReleaseDC,以保证合理的处理WM_PAINT消息:
PAINTSTRUCT ps;
CDC* pDC = BeginPaint(&ps);
//Do some drawing
EndPaint(&ps);
专门用途的设备描述表类
CPaintDC:用于在窗口客户区画图(仅限于OnPaint处理程序)
CClientDC:用于在窗口客户区画图(除OnPaint外的任何处理程序)
CWindowDC:用于在窗口内任一地方画图,包括非客户区
CMetaFileDC:用于向GDI元文件画图
CPaintDC类
MFC的CPaintDC类响应WM_PAINT消息,要调用BeginPaint和EndPaint。
CClientDC类和CWindowDC类
MoveTo 和 LineTo是CClientDC从CDC继承来的画线函数。
如果想在非客户区作图,可以借助OnNcPaint处理程序捕获WM_NCPAINT消息,确定非客户区绘图时间。
程序需要全屏幕的访问权限,可以创建CClientDC和CWindowDC对象,并给其构造函数传送一个NULL。语句
CClientDC dc(NULL);
dc.Ellipse(0,0,100,100);//将在屏幕左上角画一个圆。
屏幕截取程序经常使用全屏访问整个屏幕。
2.1.2设备描述表属性