- 1、本文档共24页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第七章 图形设备 本章主要内容 设备环境 图形设备接口 字体与文字的处理 位图 设备环境 基本概念 所谓设备环境,是由Windows保存的一个数据结构,该结构包含应用程序向设备输出时所需的信息 为便于用户使用设备环境,Visual C++的MFC中提供了设备环境类CDC,它封装了绘图时所需要的全部函数,如绘制点、线、区域和文字等 注意:在使用任何绘图函数之前,必须建立一个“设备环境”对象 设备环境类的派生 CPaintDC CPaintDC类的构造函数会自动调用BeginPaint,而其析构函数则会自动调用EndPaint CClientDC和CWindowDC CClientDC和CWindowDC类的构造函数都是调用GetDC,而其析构函数调用ReleaseDC函数 CClientDC只能在窗口的客户区(不含边框、标题栏、菜单栏和状态栏)中进行绘图,点(0, 0)表示客户区左上角的坐标 CWindowDC允许在窗口的任意位置中进行绘图,点(0, 0)表示整个窗口左上角的坐标 CMetaFileDC 设备环境 构造和析构CDC对象 创建CDC对象后,必须保证设备环境对象能适时地删除掉,并释放相应的Windows设备环境,其方法有: 通过this指针,确保函数返回时自动调用设备环境类的析构函数 例如: void CMyView::MyFunction( ) { … CRect rect; CClientDC dc(this); //this指针是指向对象自身的一个特殊的指针 dc.GetClipBox(rect); … } 通过调用CWnd的GetDC成员函数来获得设备环境的指针,并调用ReleaseDC函数来释放设备环境 例如: void CMyView::MyFunction( ) { … CRect rect; CDC* pDC = GetDC( ); //调用GetDC函数获得设备环境 pDC - GetClipBox(rect); … ReleaseDC(pDC); //调用Release函数释放设备环境 } 图形设备接口 基本概念 Windows为设备环境提供了各种绘图工具,MFC类库封装了这些工具,并提供相应的类来作为应用程序的图形设备接口GDI,这些类具有一个共同的抽象基类CGdiObject,其派生类有: CBitmap:位图类 CBrush:画刷类 CFont:字体类 CPalette:调色板类 CPen:画笔类 CRgn:区域类 GDI对象的使用 在堆栈中定义一个GDI对象(如CPen对象)后,用相应的函数(如CreatePen)创建此GDI对象 将构造好的GDI对象选入当前设备环境中,并保存原来的GDI对象 绘图结束后,恢复当前设备环境中原来的GDI对象 图形设备接口 示例: void CMyView::OnDraw(CDC* pDC) { CPen penBlack; //定义一个画笔变量 if(penBlack.CreatePen(PS_SOLID, 2, RGB(0, 0, 0))) { //将此画笔选入当前设备环境并保存原来的画笔 CPen* pOldpen = pDC - SelectObject(penBlack); //用此画笔画图 pDC - MoveTo(…); pDC - LineTo(…); //恢复设备环境中原来的画
文档评论(0)