c++面向对象程序设计第9章 图形用户界面课件.ppt

c++面向对象程序设计第9章 图形用户界面课件.ppt

ID:57055426

大小:139.00 KB

页数:29页

时间:2020-07-30

c++面向对象程序设计第9章  图形用户界面课件.ppt_第1页
c++面向对象程序设计第9章  图形用户界面课件.ppt_第2页
c++面向对象程序设计第9章  图形用户界面课件.ppt_第3页
c++面向对象程序设计第9章  图形用户界面课件.ppt_第4页
c++面向对象程序设计第9章  图形用户界面课件.ppt_第5页
资源描述:

《c++面向对象程序设计第9章 图形用户界面课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第9章图形用户界面9.1图形设备接口GDI9.2映射模式和绘图坐标9.3CDC类9.4CGdiObject类9.5实例实验8VC绘图图形设备接口GDI图形设备接口GDI(GraphicsDeviceInterface)是Windows提供的一层抽象界面,是Windows用来管理图形操作的一个与设备无关的模块,当用户的程序需要使用图形显示卡或打印机资源时,系统不允许直接针对硬件进行操作,而是要求程序与设备无关,因此,我们不能直接访问显示内存或打印机内存,而应调用GDI函数,它会对应一个名为DeviceContext(DC)的数据结构,也叫做“设备环境”,由此DeviceContext结构

2、去对实际硬件发出适当的输入/输出命令。比如,显示有显示设备环境,打印有打印设备环境。这个数据结构由Windows管理,与真正的物理设备相关联。有了GDI这一界面,就可以不必考虑程序面对不同的图形设备时,需要调用不同的函数图形设备接口GDI我们可以通过设备环境来进行绘图,不过设备环境只是提供了一个环境,好比一个画室,还不是直接用于作画的“画纸”,“画纸”其实是位图。对于一幅画,我们可以把它看作是许多条线组成的,而每条线又是一个个的点组成,这一个一个的点就称为像素点,也就是说,一幅画是由许多像素点组成的。在计算机中存储一幅图像,就是存储了该图像的所有像素点的信息,这种存储的图像,我们称其为

3、位图。当然真正的画纸可以奇形怪状,位图必须是四边形的,所以位图其实就是一个用于存储描述一个四边形图像信息的数据结构。在设备环境中作图,就是在设备环境的位图上作图。我们可以这样理解,对于显示设备环境来说,显示器就是其位图,对于打印设备环境来说,打印机就是其位图。比如我们在显示设备环境中绘图,就是在其位图显示器上绘制,绘出的图形就显示在屏幕上。我们还可以在内存中创建与显示设备环境格式相同的设备环境——内存设备环境,并且创建与显示设备环境的相兼容的位图,将兼容位图作为该兼容的内存设备环境的位图,这样,我们就能在内存设备环境中绘图(绘在兼容位图上),而且,由于该内存设备环境与显示设备环境格式相

4、同,我们所绘的图形就能从内存设备环境拷贝到显示设备环境(Windows提供这种功能),从而将图形画到显示器上。映射模式和绘图坐标绘制单位通常是像素,也称为设备坐标,因为设备环境默认映射模式MM_TEXT。如下语句:pDC->Rectangle(CRect(0,0,200,200));绘制了一个200×200像素的方框,它的左上角在窗口客户区的左上角(当向下移动窗口时,y值在向下的方向上增加)。这个方框在高分辨率显示器1024X768像素上看起来,要比在标准VGA显示器640×480像素看起来小一些,用分辨率为600dpi的激光打印机打印出来,它看起来就更小了。映射模式和绘图坐标画一个半

5、径为一厘米的圆,或者要想让方框是4×4厘米,而不考虑显示器的分辨率,应当怎么办呢?Windows提供了大量其他的映射模式或者坐标系统,它们可以与设备环境相关,也可以与设备环境无关。在当前映射模式下的坐标称为逻辑坐标。比如说,如果指定了MM_HIMETRIC映射模式,一个逻辑单位是百分之一毫米(mm),而不是一个像素。在MM_HIMETRIC映射模式中,y轴的方向与MM_TXT方式中的相反:当向下移动窗口时,y值减少。因此4×4厘米方框在逻辑坐标中以如下方法绘制:pDC->Rectangle(CRect(0,0,4000,-4000));映射模式和绘图坐标不能只在逻辑坐标下工作,因为程序

6、始终在设备坐标和逻辑坐标之间进行切换,并且,需要知道如何在它们之间进行转换。下面简单的介绍几种编程中常用的映射模式以及它们之间的相互转换。MM_TXT映射模式在MM_TXT映射模式中,原点在窗口的左上角,坐标映射到像素,如果向右移动,x值增加;如果向下移动,y值增加。但是,通过调用CDC函数SetViewPortOrg和SetWindowOrg,可以改变原点。MM_TXT映射模式把窗口原点在逻辑坐标中设置到(200,200),然后通过点(100,100)绘制一个200×200像素的方框。逻辑点(100,100)映射到设备点(0,0)。VoidCMyView::OnDraw(CDC*pD

7、C){pDC->SetMapMode(MM_TXT);pDC->SetWindowOrg(CPoint(200,200));pDC->Rectangle(CRect(100,100,300,300));}固定比例的映射模式Windows还提供了一组固定比例映射模式。在MM_HIMETRIC映射模式中,若向右移动,x值增加,若向下移动,y值减少。所有固定比例的映射模式都按这个约定进行,并且不能改变它。在固定比例的映射模式中,唯一的不同是实际的比例

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

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

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