lesson 07-08 图形设备接口

lesson 07-08 图形设备接口

ID:14706188

大小:333.00 KB

页数:14页

时间:2018-07-30

lesson 07-08 图形设备接口_第1页
lesson 07-08 图形设备接口_第2页
lesson 07-08 图形设备接口_第3页
lesson 07-08 图形设备接口_第4页
lesson 07-08 图形设备接口_第5页
资源描述:

《lesson 07-08 图形设备接口》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、Lesson07-08图形设备接口Windows系统具有丰富的图形界面。Windows系统提供许多函数来实现绘图的要求。而图形设备接口(GraphicsDeviceInterface,简写为GDI)就可看作是这些函数的集合。GDI表示的是一个抽象的接口。通过该接口可以实现对图形的颜色、线条的粗细等属性的控制(甚至包括输出文字在内)。应用程序可以通过调用这些GDI函数和硬件打交道,而不必知道到底是哪个厂家生产的硬件,从而实现了设备无关性。Windows系统本身也使用GDI来绘制用户界面的各个部分。一、设备环境1.设备环境Windows默认使用客户区坐标系,其原点在窗

2、口客户区的左上角,X轴的正方向指向右边,Y轴的正方向指向下边。当应用程序并没有设置颜色、字体等时,系统使用默认的设置。这些默认的设置保存在设备环境中。如果没有设备环境,则每输出一个字符串(调用一次TextOut函数),就需要把字体和颜色也作为参数传递给TextOut函数,而且这样的参数有很多。为了避免这样的麻烦,Windows就把这些可能会重复的参数放在了设备环境中,这样每次只需要多传入一个设备环境的指针就可以了,大大减少了重复工作。设备环境(DeviceContext,缩写为DC,有时译为设备上下文,也称设备描述表)是一种包含各种绘图属性(如字体、颜色等等)和方

3、法(即各种绘图函数)的数据结构(或者集合)。它不仅可以绘制各种图形,而且还可以确定在应用窗口中绘制图形的方式,即确定绘图混和模式和映射模式。用户在绘图之前,必须获取绘图窗口区域的一个设备环境DC,才能进行GDI函数的调用,执行适合于设备环境DC的命令(就像OnDraw函数中的pDC指针)。DC中除了提供绘图的函数(如:TextOut)以外,还会提供给用户改变绘图属性的函数,如颜色。Windows的设备环境是GDI的关键元素,它代表了不同的物理设备。分为4种类型:显示型、打印机型、内存型和信息型。每种类型的设备环境都有各自的特定用途,见下表:设备环境的类型和用途设备

4、环境用途显示器型支持视频显示器上的绘图操作打印机型支持打印机和绘图仪上的绘图操作内存型支持位图上的绘图操作信息型支持设备数据的访问2.MFC中的设备环境类在MFC类库中,设备环境被CDC类封装了起来,而CDC类下面又有4个派生类,各有特点,并可以完成不同的功能,如下所示:CMetaFileDC专门用于Windows图元文件,剩下的三种DC类之间存在差别:14CDC类的派生类派生类名称说明CClientDC说明一个客户区设备环境,提供对窗口客户区域的图形访问。在窗口中画图时可使用这种DC,但对WM_PAINT消息除外CWindowDC可以提供在整个窗口(包括客户区和

5、非客户区)中画图的设备环境CPaintDC这是创建响应WM_PAINT消息的设备环境,应用程序可以使用此类更新Windows显示,通常在MFC应用程序的OnPaint()函数中使用CMetaFileDC这个设备环境代表Windows元文件,包含一系列命令以重新产生图像。要创建独立于设备的文件时可使用这种DC,用户可以回放这种文件来创建图像①CWindowDC类与CPaintDC和CClientDC类的区别■绘图区域不同:CWindowDC类与CPaintDC和CClientDC类的区别的一个方面就是绘图区域不同。用CPaintDC类和CClientDC类的对象绘制

6、图形时,绘制区只能是客户区,而不能在非客户区,而CWindowDC可以在非客户区进行图形绘制。■绘图坐标系不同:在CWindowDC绘图类下,坐标系是建立在整个屏幕上的,在像素坐标方式下,坐标原点在屏幕的左上角,而在CPaintDC和CClientDC绘图类下,坐标系是建立在客户区上的,在像素坐标方式下,坐标原点在客户区的左上角。②CPaintDC类与CClientDC类的区别■绘图机制不同:CPaintDC类与CClientDC类都是在窗口的客户区内绘制图形,但两者在绘制机制上有着本质的区别。CPaintDC类应用在OnPaint函数中,以响应Windows的W

7、M_PAINT消息,而CClientDC应用在非响应WM_PAINT消息的情况下。CPaintDC类响应WM_PAINT消息,自动完成绘制,这对维护图形的完整性有着重要的作用。例如在一个窗口中,已经绘制了n条直线,这个窗口的完整性可能会被破坏(如被对话框覆盖),当破坏完整性的程序结束时,即覆盖取消,这个窗口就会接收到一个WM_PAINT消息,得到此消息后,激活消息处理函数(如OnPaint)进行窗口绘制。CPaintDC类对象就担负着此时的绘制工作。如果现在想在屏幕上再绘制一条直线(如用鼠标实时绘制,当第二次单击鼠标左键时完成绘制),就要用到CClinetDC类,

8、这个类可以

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。