GDI编程基础汇编.doc

  1. 1、本文档共48页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
GDI编程基础汇编

一、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

文档评论(0)

2232文档 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档