第5章-Windows图程序设计96222.ppt

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

Windows程序设计教程 第5章 Windows绘图程序设计 在编写Windows应用程序过程中,加载位图或者创建位图是程序员常用的方法。 只有熟练地掌握对于位图的有关操作方法,才能编写出标准且美观的应用程序。 本章主要介绍Windows绘图程序有关的知识,并对绘图所需要的类进行充分讲解。 通过本章的学习,读者可以掌握各种图形的绘制及图像在窗口中的一些操作。 5.1 图形设备接口 在MS-DOS程序中,通常采用直接向视频存储区或打印机端口输送数据的方式。 但采用这种方式需要各种显示卡或打印机驱动程序。 为了支持这些设备,又需要编写大量不同的代码来包含这些驱动程序。 为了避免上述问题,Windows提供了一个抽象的接口—图形设备接口(Graphics Device Interface,GDI)。 5.2 设备上下文 设备上下文(Device Context,DC)。 设备上下文是一种包含有关某个设备(如显示器或打印机)的绘制属性信息的Windows数据结构。 下面对设备上下文进行详细介绍。 5.2.1 设备上下文介绍 在Windows应用程序设计中,所有绘制调用都通过设备上下文对象进行,这些对象封装了用于绘制线条、形状和文本的Windows API。 设备上下文允许在Windows 中进行与设备无关的绘制。 设备上下文可用于绘制到屏幕、打印机或者图元文件。 在Windows应用程序中,每个窗口都关联有设备上下文。 用户只要获取到窗口的设备上下文,就可以在窗口中绘制各种图形图像等信息。 获取窗口设备上下文的函数是GetDC(),该函数的原型如下: HDC GetDC( HWND hWnd ); 5.2.2 设备上下文类型 1.显示设备上下文 2.打印机设备上下文 3.内存设备上下文 4.信息设备上下文 5.2.3 设备上下文MFC类 在MFC中,为了方便用户绘图,提供了一个设备上下文类——CDC。 CDC类封装了绘图所需要的所有成员函数,以及各种类型的Windows设备上下文的全部功能。 此外,CDC还提供了几个派生类,如图5.2所示。 1.CDC类 在CDC类中存在两个成员变量,m_hDC和m_hAttribDC。 这两个成员变量都是Windows设备上下文句柄。 CDC对象使用m_hDC对其所有的成员函数作输出调用,而使用m_hAttribDC对其所有的成员函数作属性调用。 CDC类的构造函数原型如下: CDC::CDC() { m_hDC = NULL; m_hAttribDC = NULL; m_bPrinting = FALSE; } CDC::~CDC() { if (m_hDC != NULL) ::DeleteDC(Detach()); } 2.CPaintDC类 在Windows应用程序中,通常在绘制图像之前调用函数BeginPaint(),然后在设备上下文中进行一系列的绘制操作,最后调用EndPaint函数结束绘制。 在MFC中,CPaintDC类完全封装了这一过程,其机制是这样的:在构造CPaintDC对象的同时,其构造函数自动调用BeginPaint()函数;在销毁CPaintDC对象的同时,其析构函数自动调用EndPaint()函数。 因此整个过程可以简化如下:构造CDC对象,执行绘制操作,最终销毁CDC对象。 CPaintDC类是所有CDC类中最常用的一个类,该类代表了应用程序窗口的客户区,其只能运行在CView类中的OnDraw()函数中。 OnDraw()函数的原型如下: void CView::OnDraw(CDC* pDC) { CDoc* pDoc = GetDocument(); ASSERT_VALID(pDoc); } 3.CClientDC类 与CPaintDC类一样,CClientDC类所封装的设备上下文仅代表一个窗口的客户区。 但与CPaintDC类不同的是,CPaintDC类的对象只能在视图类的OnDraw()函数中使用,而CCl

文档评论(0)

wnqwwy20 + 关注
实名认证
内容提供者

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

版权声明书
用户编号:7014141164000003

1亿VIP精品文档

相关文档