- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
一、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); //创建设备描述表
您可能关注的文档
最近下载
- 仁爱版初中英语九年级上册全册教案.pdf VIP
- 新建热网首站项目土建施工和设备安装工程技术方案.pdf VIP
- 故障码详解.ppt VIP
- NB-T11409-2023水电工程费用构成及概(估)算费用标准.docx VIP
- 导弹的诞生和发展教学课件PPT.ppt
- 发电厂和变电站工作票填写规范培训教案详解.ppt VIP
- 注册土木工程师(水土保持方向)案例题整理.docx VIP
- 系统架构设计:构建高可用、可扩展的IT系统培训课件.pptx VIP
- 河堤开挖出水池出水箱涵穿堤管道施工方案样本.doc VIP
- 人教版(PEP)新教材小学一年级英语上册Unit 2My first class 复习课件.pptx
原创力文档


文档评论(0)