欢迎来到天天文库
浏览记录
ID:59199909
大小:357.00 KB
页数:30页
时间:2020-09-26
《第17章 在窗口中绘图ppt课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第17章在窗口中绘图本章将介绍Windows下的图形编程。Windows中负责图形输出的是GraphicsDeviceInterface(图形设置接口),或称GDI。GDI为应用程序提供了可供调用的多种服务,这些服务一起构成了一种强大、通用的图形编程语言。GDI+是GDI的升级版本,它是.NETFramework中的绘图技术,使用它进行绘图操作要比GDI简单的多。MFC设备描述表绘图模式映射模式坐标使用GDI对象绘图使用不同的字体绘制文本使用鼠标绘图GDI+中的绘图类GDI+图形处理17.1WindowsGDI在
2、Windows环境下,所有的输出都是图形,而不管它是直线、矩形还是文件。Windows使用GDI(图形设备接口)绘制用户界面元素,如窗口、菜单和对话框,基至鼠标也是通过GDI绘制的。GDI支持与是显示硬件无关的图形输出,这就意味着程序中使用GDI输出的图形和文本可以在不同的显示设备中正常显示。17.1.1MFC设备描述表类当Windows程序在图形输出设备上进行绘图操作时,它并不是将像素直接输出到设备上,而是将图形绘制到由设备描述表(DC)表示的逻辑意义的“平面”。设备描述表是Windows定义的一种数据结构,它
3、包含的信息允许Windows将输出请求转换成特定物理设备的输出动作。在MFC应用程序中,CDC类将Windows设备描述表和相关的GDI函数封装在一起,组成了设备描述表类。而CDC的派生类如CPaintDC和CClientDC则代表Windows应用程序使用的不同类型的设备描述表。17.1.2设备描述表的属性当使用CDC输出函数在屏幕上绘图时,输出的某些特性需要通过设备描述表进行设置。例如,在调用CDC::DrawText()绘制文本时,可以指定输出文本的颜色和字体。表17-2列出了一些设备描述表中最常用的属性和
4、访问这些属性的CDC函数。17.1.3绘图模式GDI在进行输出时,并不是直接将像素点输出。相反,它是通过一系列的布尔运算将输出像素点的颜色和输出目标位置上像素点的颜色合成在一起。它所使用的布尔运算由设备描述表当前的绘图模式确定。使用CDC::SetROP2()函数可以更改绘图模式。默认的绘图模式为R2_COPYPEN,它将像素点复制到显示平面上。表17-3列出了几种可选的绘图模式,所有这些绘图模式代表了由AND、OR、XOR和NOT构成的运算。17.1.4映射模式映射模式作为设备描述表的属性,用于确定从逻辑坐标值
5、到设备坐标值的转换方式。调用CDC输出函数的坐标是逻辑坐标值,而设备坐标值是指窗口中相应的像素点位置。例如:dc.Rectangle(0,0,200,100);这里设置的矩形宽为200个逻辑单位,高为100个逻辑单位;而不是200个像素点高,100个像素点宽的矩形。在默认映射模式MM_TEXT下,一个逻辑单位等于一个像素点。但在其他映射模式中,逻辑单位被解释为不同的设备单位。17.1.5移动坐标原点在所有的映射模式下,设备描述表的原点都是左上角,这与数学中经常使用坐标系不相同。然而,如果改变映射模式一样,也可以移
6、动坐标原点。MFC的CDC类提供了两个可移动坐标原点的函数:CDC::SetWindowOrg()和CDC::SetViewportOrg()。17.1.6获取设备信息CDC::GetDeviceCaps()函数可以检索设备的各种信息,从设备支持的颜色数目到水平和坚直方向上显示的像素点数。表17-5列出了一些参数,将这些参数传递给GetDeviceCaps()函数将获得与设备描述表有关的信息。17.2用GDI绘图了解GDI的基础知识后,接下来就可以调用GDI函数在窗口中绘制图形。在使用MFC应用程序向导生成的程序
7、中包含了一个派生于CView类的视图类,该类就是专门用于在屏幕上显示文档数据。17.2.1应用程序中的视图类MFC应用程序向导生成的类主要负责显示文档中的数据。该类包括了几个重写后的虚函数,其中有一个OnDraw()函数特别重要。每当需要重新绘制视图时,都将调用这个函数。当程序接收到WM_PAINT消息时,就会调用该函数。17.2.2绘制直线和曲线MFC的CDC类中包含了许多可用来画直线和曲线的成员函数。表17-6列出了几个主要的函数。17.2.3绘制椭圆和矩形GDI不仅仅可以绘制简单的直线和曲线,还允许绘制椭圆
8、、矩形和饼形等封闭图形。MFC的CDC类将相关的GDI函数封装为类的成员函数。表17-7列出其中几个常用的成员函数。17.2.4画笔到目前为止,绘制图形在屏幕中都是黑色的,宽度为一个像素点。如果要改变这种情况,需要创建一个GDI画笔,并由CDC::SelectObject()将它设为设备描述表所使用的画笔。MFC使用类CPen表示GDI画笔。创建画笔的最简单方法是创建一个
此文档下载收益归作者所有