计算机图形学 mpt2_gdi

上传人:wt****50 文档编号:49544466 上传时间:2018-07-30 格式:PPT 页数:81 大小:1.22MB
返回 下载 相关 举报
计算机图形学 mpt2_gdi_第1页
第1页 / 共81页
计算机图形学 mpt2_gdi_第2页
第2页 / 共81页
计算机图形学 mpt2_gdi_第3页
第3页 / 共81页
计算机图形学 mpt2_gdi_第4页
第4页 / 共81页
计算机图形学 mpt2_gdi_第5页
第5页 / 共81页
点击查看更多>>
资源描述

《计算机图形学 mpt2_gdi》由会员分享,可在线阅读,更多相关《计算机图形学 mpt2_gdi(81页珍藏版)》请在金锄头文库上搜索。

1、多媒体软件开发技术多媒体软件开发技术第二章第二章WindowsWindows图形化编程基础图形化编程基础图形概念图形概念图形图形通常是由点、线、面、体等几何元素通常是由点、线、面、体等几何元素和灰度、色彩、线型、线宽等非几何属性和灰度、色彩、线型、线宽等非几何属性组成,用来表示实际或抽象的事物。具有组成,用来表示实际或抽象的事物。具有鲜明的轮廓线条。鲜明的轮廓线条。图形一般用矢量图来表示。图形一般用矢量图来表示。图像图像是物体发射或反射光能在视觉中成像是物体发射或反射光能在视觉中成像。2.1 2.1 图形设备接口(图形设备接口(GDIGDI)任何图形(图像在某种程度上也可看做为图形)的显示输出

2、都离不开图形设备接口-GDI,使用GDI绘制的图形具有设备无关性。利用GDI开发图形程序,可以使得程序员专注于程序的开发,而不必考虑底层的硬件问题。GDI并不直接完成图形绘制工作,它提供一种独立于设备的机制。一、一、GDIGDI(Graphic Device InterfaceGraphic Device Interface)2.1 2.1 图形设备接口图形设备接口基于GDI绘图,一般需要具备两个要素: 设备描述表 绘图工具如果把程序员比做画家,那么设备描述表就是画布,绘图工具就是画家手中的画笔、画刷、调色板等工具。2.1 2.1 图形设备接口图形设备接口二、设备描述表二、设备描述表设备描述表

3、(Device Context,DC),就是窗口的客户区,提供绘图的场地和环境。每个窗口对象都提供了一个设备环境,是应用程序与外部设备之间的桥梁。2.12.1 图形设备接口图形设备接口设备环境桥梁作用示意图设备环境桥梁作用示意图 设备环境的本质是结构体,包含背景设备环境的本质是结构体,包含背景 色等区域窗口信息。(见下表)色等区域窗口信息。(见下表)2.1 2.1 图形设备接口图形设备接口2.1 2.1 图形设备接口图形设备接口Windows系统为每个窗口建立了一个PAINTSTRUCT结构:Typedef struct tagPAINTSTRUCT Typedef struct tagPAI

4、NTSTRUCT HDC hdc;HDC hdc;/设备环境句柄设备环境句柄BOOL fErase;BOOL fErase;/一般取真值,表示擦除无效一般取真值,表示擦除无效矩形的背景矩形的背景RECT rcPaintRECT rcPaint; ;/无效矩形标识无效矩形标识BOOL fRestore;BOOL fRestore;/系统保留系统保留BOOL fIncUpdate;BOOL fIncUpdate;/系统保留系统保留BYTE rgbReserved16BYTE rgbReserved16; /系统保留系统保留PAINTSTRUCT;PAINTSTRUCT;2.1 2.1 图形设备接口

5、图形设备接口获取设备环境是应用程序输出图形的先决条件,常用的两种方法是调用BeginPaint或GetDC函数。A. 应用程序响应WM_PAINT消息进行图形刷新时,通过调用BeginPaint函数获取设备环境。由BeginPaint函数获取的设备环境要用EndPaint函数释放。B. 如果绘图工作并不是由WM_PAINT消息驱动的,则调用GetDC函数获取设备环境。而由GetDC函数获取的设备环境必须用ReleaseDC函数释放。2.1 2.1 图形设备接口图形设备接口三、绘图工具三、绘图工具使用绘图工具可以在Windows设备环境中绘制具有各种效果的图形(点、线、多边形及文本等)。当默认绘

6、图工具不能满足需求时,就需要修改绘图工具(参数),达到绘制丰富多彩图形的目的。Windows的绘图工具包括画笔、画刷、字体、位图、调色板和区域。在MFC中这些绘图工具被封装到相应的类中。2.2 2.2 映射模式映射模式一、逻辑坐标与设备坐标一、逻辑坐标与设备坐标在GDI绘制函数中,使用的是一种逻辑坐标:当将结果输出到某个物理设备上时,需要将逻辑坐标转换成设备坐标。(1 1)逻辑坐标。逻辑坐标与设备无关,是内存中虚拟的坐标,一个像素为一个逻辑单位。设计人员只要使用合适的映射模式,并不需要考虑面向何种设备。(2 2)设备坐标。在设备坐标系统中,单位以像素点为准,水平值从左到右增大(正方向向右),垂

7、直值从上到下增大(正方向向下)。2.2 2.2 映射模式映射模式坐标名称包含区域坐标原点工作区坐标应用程序的客户区域客户区域左上角窗口坐标一个程序的整个窗口, 包括标题条、菜单、滚 动条和窗口框等窗口左上角屏幕坐标包括整个屏幕屏幕左上角WindowsWindows环境下三种设备坐标环境下三种设备坐标2.2 2.2 映射模式映射模式当在Windows环境中绘图时,绘图的坐标原点在屏幕的左上角,任何物体在屏幕上定位都要参考这个坐标原点(0,0)。(0,0)2.2 2.2 映射模式映射模式2.2 2.2 映射模式映射模式对应程序员在逻辑坐标系上设定的绘图区域称为窗口窗口,这是一个虚拟区域,它可以被激

8、活、失效、在逻辑坐标系上移动和改变大小等。对应程序员在设备坐标定义实际输出的区域称为视口视口。窗口依赖于逻辑坐标,可以是像素点、毫米或其它尺度。牢记这点牢记这点, , 对于理解后面的有关内容很重要!对于理解后面的有关内容很重要!2.2 2.2 映射模式映射模式二、坐标映射二、坐标映射映射模式定义了Windows如何将GDI函数中指定的逻辑坐标映射为设备坐标,如何将逻 辑单位转化为设备的度量单位以及设备的x方向和y方向。用户可在一个统一的逻辑坐标系中操作而不必考虑输出设备的坐标系情况。常用的映射模式,见下表。2.2 2.2 映射模式映射模式映射模式一个逻辑单 位映射为坐标系设定备 注MM_ANI

9、SOTROPIC系统确定Optional按照窗口和视口的坐标比 例进行映射,即各向同性 MM_HIENGLISH0.001inchY上,X右 MM_HIMETRIC0.01mmY上,X右 MM_ISOTROPIC系统确定Optional,但x轴和y 轴的单位此例为1: 1将窗口中的对称图形映射 到视口时仍为对称图形 MM_LOENGLISH0.01inchY上,X右 MM_LOMETRIC0.1mmY上,X右 MM_TEXT一个像素Y下,X右默认的映射模式 MM_TWIPS1/1440inchY上,X右常用的映射模式2.2 2.2 映射模式映射模式应用程序可以设置、获取设备环境的当前映射模式。

10、 设置映射模式设置设备环境的映射模式可使用SetMapMode函数:int SetMapMode( HDC hdc, int fnMapMode);int SetMapMode( HDC hdc, int fnMapMode);其中 参数hdc用来标识设备环境; 参数fnMapMode为映射模式的整型标识符。2.2 2.2 映射模式映射模式获取映射模式如果想要获取当前设备环境的映射模式,可用GetMapMode函数,其函数原型如下:int GetMapMode( HDC hdc);int GetMapMode( HDC hdc);若调用成功,则返回一个映射模式值;否则返回0。2.2 2.2 映

11、射模式映射模式三、设置窗口、视口区域三、设置窗口、视口区域可用SetWindowExtEx函数设置窗口区域设置窗口区域,函数原型如下:BOOL SetWindowExtEx(HDC hdc, /设备环境句柄int nXExtent, /以逻辑单位表示的新窗口区域的Xint nYExtent, /以逻辑单位表示的新窗口区域的YLPSIZE lpSize /保存旧窗口区域尺寸SIZE结构地址);2.2 2.2 映射模式映射模式使用SetViewportExtEx函数设置视口区域设置视口区域,函数原型如下:BOOL SetViewportExtExBOOL SetViewportExtEx( (HD

12、C hdc, HDC hdc, / /设备环境句柄设备环境句柄int nXExtent, int nXExtent, / /以物理设备单位表示的新视口区域的以物理设备单位表示的新视口区域的X Xint nYExtent, int nYExtent, / /以物理设备单位表示的新视口区域的以物理设备单位表示的新视口区域的Y YLPSIZE lpSize LPSIZE lpSize / /保存旧视口区域尺寸的保存旧视口区域尺寸的SIZESIZE结构地址结构地址); );2.3 2.3 三基色与调色板三基色与调色板 人眼视网膜上的锥状细胞有红、绿和蓝敏细胞三种。国际照明委员会规定了R、G、B这三种光

13、为基色: R为红光,波长为700.0nm,基色单位当量为1; G为绿光,波长为546.1nm,基色单位当量为4.5907; B为蓝光,波长为435.8 nm,基色单位当量为0.0601。当量是指用指定三基色配出标准白光时,RGB三基色的光的比例,这里为14.59070.0601。三色系数的比例决定所配彩色光的颜色,它们的数值决定所配彩色光的亮度。RGB也称为颜色F的三基色分量或三基色坐标。2.3 2.3 三基色与调色板三基色与调色板组成颜色RGB红25500蓝02550绿00255黄2552550紫2550255青0255255白255255255黑000灰1281281282.3 2.3 三

14、基色与调色板三基色与调色板彩色图像要比黑白图像大得多。由于数据量大增,显示真彩色会使系统的整体性能迅速下降。使 用调色板来减少/限制颜色的数目来解决这个问题。调色板实际上是一个有256个表项的RGB颜色表,颜色表的每项是一个24位的RGB颜色值。使用调色板时,在视频内存中存储的不是24位颜色值,而是调色板的4位或8位的索引。颜色被限制在256色以内,对系统资源的耗费大大降低了。2.3 2.3 三基色与调色板三基色与调色板调色板工作原理调色板工作原理2.3 2.3 三基色与调色板三基色与调色板每个设备环境都拥有一个逻辑调色板,默认逻辑调色板只有20种保留颜色。如果创建了新的逻辑调色板,需选入到设

15、备环境中,并实现到系统调色板中,此时Windows将会建立一个调色板映射表,GDI函数绘图时会查询该映射表,把像素值从逻辑调色板的索引转换成系统调色板的索引。2.3 2.3 三基色与调色板三基色与调色板调用函数功能函数返回值 HPALETTE CreatePalette(CONST LOGPALETTE *lplgpl)创建逻辑调色板 逻辑调色板 句柄HPALETTE SelectPalette( HDC hdc, HPALETTE hpal, BOOL bForceBackground);把逻辑调色板选 入到要使用它的 设备环境中。之前的逻辑 调色板UINT RealizePalette(H

16、DC hdc);把逻辑调色板实 现到系统调色板 中被实现的数 目创建与使用调色板函数2.3 2.3 三基色与调色板三基色与调色板在调用GDI函数绘图时,Windows用COLORREF数据类型来表示颜色,并提供了三个宏来构建三种不同的COLORREF数据: COLORREF RGB(BYTE bRed,COLORREF RGB(BYTE bRed, BYTE bGreen,BYTE bGreen, BYTE bBlue); BYTE bBlue); /RGB/RGB引用引用 COLORREF PALETTEINDEX(WORD wPaletteIndex); COLORREF PALETTEINDEX(WORD wPaletteIndex); / /调色板索引引用调色板索引引用 COLORREF COLORREF PALETTERGB(BYTE

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 行业资料 > 文化创意

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号