81设备环境(DC) 5. CMdtaFileDC类 CMetafiledC类提供了一个面向 Windows图元文件的设备 环境,封装了在一个 Windows图元文件中绘图的方法 图元文件是一个与设备无关的图片的集合,由于它对 图像的保存比像素更精确,因而往往在要求较高的场 合下使用,例如 AutOCAD的图形保存等 U回
返回 6 5. CMdtaFileDC类 CMetaFileDC类提供了一个面向Windows图元文件的设备 环境,封装了在一个Windows图元文件中绘图的方法。 图元文件是一个与设备无关的图片的集合,由于它对 图像的保存比像素更精确,因而往往在要求较高的场 合下使用,例如AutoCAD的图形保存等。 8.1 设备环境(DC)
81设备环境(DC) 8.1.2几个设备环境类的主要差别 1. CWindowDC类与 CPaintDC、 CClientDC类的区别 其区别主要有以下两个方面: (1)用 CPaintdc和 CClientDC类的对象绘制图形时,绘 制区只能在客户区,而不能在非客户区;而 CwindowDC 类既可以在窗口的客户区也可以在非客户区进行图形绘 制 (2)在 CWindowDC绘图类下,坐标系是建立在整个屏幕上 的,在像素坐标方式下,坐标原点在屏幕的左上角;而 在 CPaintDc和 CClientdc绘图类下,坐标系是建立在客 户区上的,在像素坐标方式下,坐标原点在客户区的左 上角。 U回
返回 7 8.1.2 几个设备环境类的主要差别 1. CWindowDC类与CPaintDC 、CClientDC类的区别 其区别主要有以下两个方面: (1)用CPaintDC 和CClientDC类的对象绘制图形时,绘 制区只能在客户区,而不能在非客户区;而CwindowDC 类既可以在窗口的客户区也可以在非客户区进行图形绘 制。 (2)在CWindowDC绘图类下,坐标系是建立在整个屏幕上 的,在像素坐标方式下,坐标原点在屏幕的左上角;而 在CPaintDC和CClientDC绘图类下,坐标系是建立在客 户区上的,在像素坐标方式下,坐标原点在客户区的左 上角。 8.1 设备环境(DC)
81设备环境(DC) 2. CPaintdC类与 CClientDC类的区别 > CPaintDC类的对象应用在 OnPaint函数中,以响应 Windows的 WM PAINT消息;而 CClientDC类的对象应用 在非响应消息 WM PAINT的情况下 > CPaintDC类响应 WM PAINT消息,并自动完成绘制,这 对维护图形的完整性有着重要的作用。 CClientDc类可 以实时地将图形绘制到屏幕上,不需要重画;而如果 用 CPaintDC类的对象完成同样的工作,只能发出消息 让屏幕上包含这条直线的区域重画,以把这条直线绘 制到屏幕上 U回
返回 8 2. CPaintDC类与CClientDC类的区别 ➢ CPaintDC类的对象应用在OnPaint函数中,以响应 Windows的WM_PAINT消息;而CClientDC类的对象应用 在非响应消息WM_PAINT的情况下。 ➢ CPaintDC类响应WM_PAINT消息,并自动完成绘制,这 对维护图形的完整性有着重要的作用。CClientDC类可 以实时地将图形绘制到屏幕上,不需要重画;而如果 用CPaintDC类的对象完成同样的工作,只能发出消息 让屏幕上包含这条直线的区域重画,以把这条直线绘 制到屏幕上。 8.1 设备环境(DC)
81设备环境(DC) 8.1.3设备环境类的使用方法 1.CDC类 因为CDC类不能用窗口对象指针初始化对象,所以,一般不直接定义 对象 2. CPaintDC类 CPaintdc类一般用在窗口类 OnPaint函数中,可采用如下代码定义 个 CPaintdc类对象: CPaintdc dc(this 以上代码定义了一个 CPaintDc类的对象dc,并用当前的窗口对象指针 this对对象进行了初始化。 CClientDC和 CWindowDC类也采用这样的 方法 3. CClientDC类 可利用以下代码定义一个对象: CClientdc dc(this) 4. CWindowDC类 利用以下代码创建一个 CWindowDC类的对象: CWindowdc dc(this); U回
返回 9 8.1.3 设备环境类的使用方法 1. CDC类 因为CDC类不能用窗口对象指针初始化对象,所以,一般不直接定义 对象。 2. CPaintDC类 CPaintDC 类一般用在窗口类OnPaint函数中,可采用如下代码定义一 个CPaintDC类对象: CPaintDC dc(this); 以上代码定义了一个CPaintDC类的对象dc,并用当前的窗口对象指针 this对对象进行了初始化。CClientDC和CWindowDC类也采用这样的 方法。 3. CClientDC类 可利用以下代码定义一个对象:CClientDC dc(this); 4. CWindowDC 类 利用以下代码创建一个CWindowDC类的对象:CWindowDC dc(this); 8.1 设备环境(DC)
82绘图设备类 Windows为设备环境提供了各种各样的绘图工具,如【画笔】、【画 刷】以及【字体】等。在MFC中封装了这些工具,这些类称为GDI 类,它们有一个共同的抽象基类 CGdiobject,可以将这些绘图设 备类创建的对象选入到设备环境中,完成有关的操作。 在MFC中主要的绘图设备类有: CGdiobject、CPen、 CBrush、 CFont CBitmap、CRgn和 PAlette等。 在选择绘图设备类对象(GDI对象)进行绘图时,一般可按下列步 骤进行: (1)定义一个GDI对象,然后调用相应的函数(如 CreatePen、 CreateSolidBrush等)创建此GDI对象。 (2)将已构造出的GDI对象利用设备环境类对象的成员函数 Selectobject选入到当前环境中,并同时将原来的GDI对象保存起 来 (3)绘图结束后,恢复当前设备环境中原来的GDⅠ对象。 注意:在 Windows系统中包含了一些库存的GDI对象,在第(3)步中 可直接利用设备环境类(CDC)的成员函数 Selectstock:将 个 Windows库存的GD对象选入,系统可自动将原来选入的GDI对 象从设备环境中分离出来。 U回
返回 10 8.2 绘图设备类 Windows为设备环境提供了各种各样的绘图工具,如【画笔】、【画 刷】以及【字体】等。在MFC中封装了这些工具,这些类称为GDI 类,它们有一个共同的抽象基类CGdiObject,可以将这些绘图设 备类创建的对象选入到设备环境中,完成有关的操作。 在MFC中主要的绘图设备类有:CGdiObject、CPen、CBrush、CFont、 CBitmap、CRgn和CPalette等。 在选择绘图设备类对象(GDI对象)进行绘图时,一般可按下列步 骤进行: (1)定义一个GDI对象,然后调用相应的函数(如CreatePen、 CreateSolidBrush等)创建此GDI对象。 (2 )将已构造出的GDI 对象利用设备环境类对象的成员函数 SelectObject选入到当前环境中,并同时将原来的GDI对象保存起 来。 (3)绘图结束后,恢复当前设备环境中原来的GDI对象。 注意:在Windows系统中包含了一些库存的GDI对象,在第(3)步中 可直接利用设备环境类(CDC)的成员函数SelectStockObject将 一个Windows库存的GDI对象选入,系统可自动将原来选入的GDI对 象从设备环境中分离出来