欢迎来到天天文库
浏览记录
ID:58861831
大小:177.50 KB
页数:54页
时间:2020-09-30
《《面向对象的程序设计语言――C++》课件--第8章.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第8章图形图像处理1.设备环境(DC)的概念。2.常用的几个设备环境类如CPaintDC、CClientDC、CWindowDC和CMetaFileDC类的主要特点及它们在使用方法上的区别。3.GDI的概念及常用的绘图设备类如CGdiObject、CPen、CBrush、Cfont和CBitmap等的对象的创建和将其引入到设备环境中的方法。4.Windows下的坐标映像方式和特点以及如何设置坐标映像方式。5.几种常见的Windows的坐标映像方式下的坐标转换方法。6.几种常见的基本图形元素如点、直线、矩形和文字等的绘制方式。18.1设备环境(DC)(1)在Windows中,显示工作
2、是基于设备环境的。所谓设备环境(DC)是一种Windows数据结构,该结构包含应用程序设备输出时所需要的信息。(2)在使用任何绘图函数之前必须建立一个设备环境对象。(3)在VisualC++6.0的MFC中提供了设备环境类CDC,它封装了绘图所需要的所有函数,其中包括了大多数的WindowsAPI中的GDI函数。28.1.1设备环境类1.CDC类(1)CDC类是CObject类的派生类,也是所有设备环境类的基类。CDC类定义了一个设备描述对象,并提供了对设备描述对象进行操作的成员函数以及对与窗口客户区有关的显示区进行操作的成员函数。(2)CDC类提供的成员函数可以用于操作设备描述对
3、象、使用绘图工具、选择图形设备界面,以及操作颜色和调色板,还用于取得和设置绘图属性、映射方式、视图和窗口范围的操作、坐标的转换、区域的使用、剪取、画线以及绘制图形和文字等操作。8.1设备环境(DC)32.CPaintDC类(1)CPaintDC类是CDC类的一个派生类,该类一般用在响应WM_PAINT消息的函数OnPaint()中。(2)WM_PAINT消息是当窗口的某个区域需要重画时激发的窗口消息。当程序中的消息循环接到WM_PAINT消息时就自动调用消息处理函数OnPaint(),如果在OnPaint函数内定义了CPaintDC类的对象,通过这个类对象就可以使用CDC类的成员函
4、数完成视图客户区中的图形绘制操作。8.1设备环境(DC)43.CClientDC类CClientDC类也是CDC类的派生类。它只能在窗口的客户区(即窗口中除了边框、标题栏、菜单栏以及状态栏外的中间部分)中进行绘图,坐标点(0,0)通常指的是客户区的左上角。它的构造函数调用GegDC函数,而析构函数调用ReleaseDC函数。4.CWindowDC类CWindowDC类也是CDC类的派生类。其成员函数可以在窗口的客户区和非客户区(即窗口的边框、标题栏、菜单栏以及状态栏)中绘图,坐标点(0,0)是指整个屏幕的左上角。同CClientDC类一样,它的构造函数调用GegDC函数,而析构函数
5、调用ReleaseDC函数。8.1设备环境(DC)55.CMdtaFileDC类CMetaFileDC类提供了一个面向Windows图元文件的设备环境,封装了在一个Windows图元文件中绘图的方法。图元文件是一个与设备无关的图片的集合,由于它对图像的保存比像素更精确,因而往往在要求较高的场合下使用,例如AutoCAD的图形保存等。8.1设备环境(DC)68.1.2几个设备环境类的主要差别1.CWindowDC类与CPaintDC、CClientDC类的区别其区别主要有以下两个方面:(1)用CPaintDC和CClientDC类的对象绘制图形时,绘制区只能在客户区,而不能在非客户区
6、;而CwindowDC类既可以在窗口的客户区也可以在非客户区进行图形绘制。(2)在CWindowDC绘图类下,坐标系是建立在整个屏幕上的,在像素坐标方式下,坐标原点在屏幕的左上角;而在CPaintDC和CClientDC绘图类下,坐标系是建立在客户区上的,在像素坐标方式下,坐标原点在客户区的左上角。8.1设备环境(DC)72.CPaintDC类与CClientDC类的区别CPaintDC类的对象应用在OnPaint函数中,以响应Windows的WM_PAINT消息;而CClientDC类的对象应用在非响应消息WM_PAINT的情况下。CPaintDC类响应WM_PAINT消息,并自
7、动完成绘制,这对维护图形的完整性有着重要的作用。CClientDC类可以实时地将图形绘制到屏幕上,不需要重画;而如果用CPaintDC类的对象完成同样的工作,只能发出消息让屏幕上包含这条直线的区域重画,以把这条直线绘制到屏幕上。8.1设备环境(DC)88.1.3设备环境类的使用方法1.CDC类因为CDC类不能用窗口对象指针初始化对象,所以,一般不直接定义对象。2.CPaintDC类CPaintDC类一般用在窗口类OnPaint函数中,可采用如下代码定义一个CPaint
此文档下载收益归作者所有