欢迎来到天天文库
浏览记录
ID:33447384
大小:169.01 KB
页数:25页
时间:2018-05-24
《vc++windows绘图》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、设备描述表和图形对象设备描述表与图形设备接口MFC的设备描述表及图形对象CDC的绘图用CDC输出汉字7.1设备描述表与图形设备接口Windows图形设备接口(GDI)是为与设备无关的图形设计的。所谓设备的无关性,就是操作系统屏蔽了硬件设备的差异,因而设备无关性能使用户编程时无需考虑特殊的硬件设置图形设备接口(GDI)GDI负责系统与用户或绘图程序之间的信息交换,并控制在输出设备上显示图形或文字,是Windows系统的重要组成部分Windows支持与设备无关的图形利用GDI和Windows设备驱动程序开发人员只要建立与输出设备的关联,让系统加载相
2、应的设备驱动程序即可21.GDI的一些基本概念设备描述表即为设备环境的属性的集合应用程序与输出设备之间的桥梁Win系统外设直接访问不允许统一的设备环境(DC)提供使应用程序与设备相连用户为确保图形输出的设备无关性32.图形刷新图形刷新是绘图过程中必须考虑的重要问题刷新请求对刷新请求的响应刷新方法包括(1)刷新请求应用程序在窗口中绘制了一个椭圆,颜色列表框覆盖了椭圆的一部分关闭颜色选框后,应用程序需要恢复被覆盖部分的颜色和形状窗口大小的调整窗口移动被覆盖后的恢复4(2)系统对刷新请求的响应当用户区的内容需要刷新时,系统向应用程序消息队列发送WM_
3、PAINT消息,系统在应用程序的消息队列中加入该消息,以通知窗口函数执行刷新处理三种刷新窗口移动后的刷新被覆盖区域的刷新对象穿越后的刷新(系统自动完成)用户区移动或显示用户窗口大小改变程序通过滚动条滚动窗口窗口被另一个窗口覆盖的恢复如下拉式菜单关闭等光标穿过用户区图标拖过用户区5常用的Windows应用程序刷新窗口的方法保存副本。刷新时将副本拷贝到相应的窗口中记录事件。刷新时重新执行这个曾经发生的事件重新绘制。将图形绘制处理程序放在消息WM_PAINT响应模块中,刷新时重绘图形(3)有效的刷新方法67.2MFC设备描述表-CDC类MFC将设备描
4、述表(DC)和图形设备接口(GDI)封装在一起做为设备描述表类-CDC类CDC既包括了设备属性又包括了绘图方法,通过此方法可以实现GDI的所有图形输出CDC包括了177种函数,还要很多数据成员,使用时特别注意内存上的管理,标准使用方法举例:CDC*pDC=GetDc();//假设此代码位于CWnd类调用函数申请DC对象pDC->GetTextMetrics(&tm)//调用CDC类方法获取当前系统字体信息………ReleaseDC(pDC)//释放CDC对象和设备描述表以释放内存77.3CDC的派生类CDC的几个常用派生类-CPaintDC、CC
5、lientDC和CWindowDC1.CPaintDC类-该类用于WM_PAINT消息的处理程序OnPaint()中WM_PAINT消息是在窗口被改变大小、重画、刷新时产生CPaintDC类一般用于在OnPaint()函数中实现诸如窗口重绘之类等重画图形的工作使用CPaintDC类画图形例程演示。82.CClientDC类是CDC类中的最常用类CClientDC的析构函数将自动调用ReleaseDC()自动释放设备描述表可以随意使用,可在任何时候使用实现按下鼠标左键画图例程演示:93.CWindowDC类CWindowDC类可以在任何地方使用,
6、也可以自动释放设备描述表CWindowDC可以在整个应用程序的窗口上画图,这是一般的类所不具备的用CWindowDC类实现在整个应用程序上画图例程:107.4图形对象图形对象包括画笔、调色板、刷子等MFC将这些画图工具都归于一类CGdiObject类,由此派生出具体的绘图工具类:画笔(CPen)、刷子(CBrush)、字体(CFont)、位图(CBitmap)、调色板(CPalette)、区域(CRgn)1.画笔-CPen类-MFC类绘图的笔,它有样式、宽度、色彩等属性CPen容易使用,使用步骤如下:第一步:生成CPen类的对象第二步:用CPe
7、n:CreatePen()方法创建笔的内容第三步:建立CPen与CDC之间的联系,使用CDC::SelectObject()第四步:利用画笔进行绘图操作11画笔-CPen类使用举例创建新画笔,形式如下:CPenMyPen;MyPen.CreatePen(intnPenStyle,//确定画笔样式intnWidth,//画笔宽度COLORREFrgbColor//画笔颜色);创建画笔后,必须调用SelectObject函数将其选入设备环境。SelectObject(CPen*pen);//函数需要画笔的指针PS_DASH:虚线PS_DASHDOT
8、:点划线PS_DASHDOTDOT:双点划线PS_DOT:点线PS_INSIDEFRAME:实线PS_NULL:不可见线PS_SOLID:实线122.
此文档下载收益归作者所有