GDI编程基础汇编.doc
文本预览下载声明
一、GDI相关概念
1、GDI(Graphics Device Interface):图形设备接口,是一个应用程序与输出设备之间的中介。它提供了一套函数库,这些函数在不同的输出设备上输出图形和文字。一方面,GDI向应用程序提供一个与设备无关的编程环境,另一方面,它又以设备相关的格式和具体的设备打交道。
2、DC Device Context :设备描述表 设备上下文 ,是一种Windows数据结构,包括了如线的宽度和颜色、刷子的样式和颜色、字体、剪裁区域等信息。用于表达显示器、打印机等设备。
DC的主要作用是进行绘图和输出文字,如绘制线条、形状和文本等,具体如dc.MoveTo ,dc.LineTo ,dc.Ellipse ,dc.FillRect ,dc.FillSolidRect ,dc.TextOut 等。
Win32下与HDC相关的函数有:GetDC , BeginPaint /EndPaint ,GetWindowDC 等
对应的MFC版本的类有:CDC, CPaintDC, CClientDC, CWindowDC等
3、GDI对象:DC定义了一组GDI对象,包括画笔,画刷,字体,位图,调色板,剪裁区域,路径层 Path 。他们有Win32和MFC两套实现版本,其对应关系如下:
Win32对象 MFC类 HPEN CPen HBRUSH CBrush HFONT CFont HBITMAP CBitmap HPALETTE CPalette HRGN CRgn
4、DC与GDI对象之间的关系:GDI对象是通过DC发生作用的,要使用这些GDI对象,可以使用Win32函数SelectObject来将其选入DC中,如::SelectObject hdc, hPen ;
5、利用DC和GDI对象绘图的完整步骤为:
1 . 获取或者创建一个DC
2 . 获取或者创建一个GDI对象 Pen, Brush等
3 . 使用dc.SelectObject函数把GDI对象选入DC
4 . 使用DC进行绘图或文字输出
5 . 恢复DC原来的GDI对象并删除刚新创建的GDI对象,如pen.DeleteObject 6 . 释放或删除设备描述表DC
其中, 1 和 6 , 2 和 4 是成对出现的。
二、设备描述表DC
Win32下获取DC的API函数有:
HDC BeginPaint HWND hwnd, LPPAINTSTRUCT lpPaint :特定用于WM_PAINT消息
HDC GetDC HWND hWnd :用于获得hWnd参数所指定窗口的客户区域的HDC。
HDC GetWindowDC HWND hWnd :返回hWnd参数所指定的窗口的HDC,包括非客户区,如标题栏、菜单、滚动条,以及边框等。hWnd为NULL时,获取整个屏幕的HDC。
MFC对上述HDC对象和Win32函数进行了封装,基类为CDC类。CDC类包含了各种Win32 HDC的全部功能。在MFC下,使用CDC的成员函数进行图形绘制和文字输出。
CDC类有两个成员变量:m_hDC,m_hAttribDC,它们都是Windows设备描述表句柄。CDC的成员函数作输出操作时,使用m_Hdc;要获取设备描述表的属性时,使用m_hAttribDC。在创建一个CDC类实例时,缺省的m_hDC等于m_hAttribDC。
CDC在封装Win32函数SelectObject HDC hdc,HGDIOBJECT hgdiobject 时,采用了重载技术,即它针对不同的GDI对象,提供了如下名同而参数不同的成员函数:
SelectObject CPen *pen //用于选入笔
SelectObject CBitmap* pBitmap //用于选入位图
SelectObject CRgn *pRgn //用于选入剪裁区域
SelectObject CBrush *pBrush //用于选入刷子
SelectObject CFont *pFont //用于选入字体
SelectPalette CPalette *pPalette,BOOL bForceBackground //选入调色板到DC
RealizePalletter //实现逻辑调色板到物理调色板的映射
直接使用CDC的例子是内存设备上下文,例如:
CDC dcMem.CreateCompatibleDC dc ; //创建设备描述表
CDC pbmOld dcMem.SelectObject m_bmBall ; //更改设备描述表属性
//作一些绘制操作
dcMem.SelectObject pbmOld ; //恢复设备描述表的属性
dcM
显示全部