欢迎来到天天文库
浏览记录
ID:50082008
大小:406.50 KB
页数:27页
时间:2020-03-08
《C++实用教程课件-张荣梅 第6章图形设备接口与绘图.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第6章图形设备接口与绘图河北经贸大学信息技术学院VC++程序设计1教学目标了解设备环境和图形设备接口(GDI)的基本概念。掌握常用GDI对象的使用方法。掌握如何绘制图形和输出文本。2本章主要内容设备环境和设备环境类GDl绘图对象CDC中的绘图操作绘制时钟36.1设备环境和设备环境类6.1.1设备环境图形设备接口(GraphicsDeviceInterface,GDI)是Windows的重要组成部分,用户通过调用GDI函数使用硬件设备,GDI通过不同设备提供的驱动程序将绘图语句转换为对应的绘图指令,避免了用户对硬件直接进行操作
2、,从而实现了设备无关性。4为了体现Windows的设备无关性,应用程序的输出不直接面向显示器或打印机等物理设备,而是面向一个称为设备环境(DeviceContext,DC)的虚拟逻辑设备。设备环境也叫设备描述表或设备上下文,它是Windows定义的一个数据结构,该数据结构包含了向设备输出时所需要的绘图属性。在使用任何GDI函数之前,必须首先创建一个设备环境。Windows应用程序通过设备环境操作物理设备的绘图过程56.1.2设备环境类1.设备环境类及其功能①CDC②CClientDC③CWindowDC④CPaintDC⑤C
3、MetaFileDC2.设备环境类CDC的内容①当前GDI绘图对象及其管理②映射模式③绘图操作66.1.3获取设备环境1.在视图类的OnDraw()中输出图形或文本使用MFCAppWizard生成SDI或MDI应用程序时,视图类的OnDraw()的参数pDC就是一个指向CDC的指针,在OnDraw()中绘图就是使用指针pDC标志的设备环境。该指针是在程序响应WM_PAINT消息时由OnPain()创建并传递给OnDraw()的。在视图的客户区中输出一行文本和绘制一个矩形:72.使用设备环境类的对象获取设备环境如果不是在视图类
4、的OnDraw()中绘图,则需要自己声明设备环境类的对象,并使用this指针初始化该对象。下面是单击消息处理函数中绘制一个椭圆的代码:voidCEx6_1View::OnLButtonDown(UINTnFlags,CPointpoint){//TODO:Addyourmessagehandlercodehereand/orcalldefaultCClientDCdc(this);//声明客户区设备环境CRectr;GetClientRect(&r);//获取客户区大小dc.Ellipse(r);//绘制椭圆CView::O
5、nLButtonDown(nFlags,point);}83.使用CWnd类的GetDC()获取设备环境如果绘图操作不是在WM_PAINT消息处理函数中,还可以通过调用CWnd类的成员函数GetDC()获取设备环境,调用ReleaseDC()释放设备环境。例如,右击消息处理函数中绘制一个圆角矩形的代码如下:voidCEx6_1View::OnRButtonDown(UINTnFlags,CPointpoint){//TODO:Addyourmessagehandlercodehereand/orcalldefaultCDC*
6、pDC=GetDC();//申请设备环境pDC->RoundRect(80,80,400,400,50,50);//绘制圆角矩形ReleaseDC(pDC);//释放设备环境CView::OnRButtonDown(nFlags,point);}96.2GDl绘图对象6.2.1GDI对象分类CPen类CBrush类CFont类CRgn类CBitmap类CPalette类106.2.2CPen类1.库存画笔库存画笔有三种:BLACK_PEN(黑色画笔)、WHITE_PEN(白色画笔)和NULL_PEN(空画笔)。2.自定义画笔
7、(1)创建画笔方法一:使用CPen类的带参构造函数定义画笔对象,函数原型如下:CPen(intnPenStyle,intnWidth,COLORREFcrColor);方法二:使用CPen类的无参构造函数定义画笔对象,再调用CreatePen()创建指定画笔。CreatePen()原型如下:BOOLCreatePen(intnPenStyle,intnWidth,COLORREFcrColor);11(2)装载画笔创建一个画笔后,必须将画笔选入设备环境才能使用。可以使用CDC类的成员函数SelectObject()将新的画笔
8、选入设备环境,该函数原型如下:CPen*SelectObject(CPen*pPen);(3)还原画笔当绘图完成后,应该调用CDC类的成员函数SelectObject()恢复设备环境原来的画笔,并调用CGdiObject类的成员函数DeleteObject()释放画笔所占的内存资源。示例:
此文档下载收益归作者所有