多媒体全册完整教学课件_第1页
多媒体全册完整教学课件_第2页
多媒体全册完整教学课件_第3页
多媒体全册完整教学课件_第4页
多媒体全册完整教学课件_第5页
已阅读5页,还剩960页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

多媒体全册完整教学课件多媒体开发与编程课程内容Windows图形基础OpenGL图形绘制Direct3D图形绘制3DMAX模型显示与控制数字图像处理音频基于DirectShow的视频播放多媒体数据库课时安排一、理论讲授 60学时二、实验 12

学时

基本图形绘制

OpenGL编程基础音频播放器数字图像处理引言多媒体有用吗?嫦娥奔月引言多媒体有用吗?火星探索引言多媒体有用吗?探索金字塔引言多媒体有用吗?天籁之音多媒体技术功不可没!1绪论

基本概念起源与历程研究内容与关键技术多媒体标准应用领域与经典案例发展方向与趋势1.1什么是媒体

媒体(Medium)一词源自拉丁文Medius,意为“中间、中介”,是用于“表示、存储、传输信息的载体”,如文字、声音、图形、图像、视频、动画等。1.1什么是媒体

根据ITU/CCITT

规范,媒体可分为以下五种类型:感觉媒体:直接作用于人的感官,使人产生直觉,如视觉、听觉、嗅觉、触觉等。表示媒体:为加工、处理、传输感觉媒体而人为构造出来的媒体形式,即各种信息的编码和格式。显示媒体:用于感觉媒体与电信号之间转换的一类媒体,可看作为感觉媒体与计算机的接触界面。一般可分为输入显示媒体和输出显示媒体。存储媒体:保存表示媒体的介质,又称存储介质。传输媒体:将媒体从一处传送到另一处的物理载体。1.1什么是媒体各类文字和符号文字多媒体多媒体多媒体如何从事多媒体教学1.1什么是媒体通过计算而描述的矢量图形文字图形1.1什么是媒体用像素点描述的自然影像文字图形图像1.1什么是媒体单画面矢量动画和多画面帧动画文字图形图像动画多画面帧动画单画面矢量动画FRAME01FRAME02FRAME03FRAME04FRAME05FRAME06FRAME071.1什么是媒体视频数字信号AVI、压缩视频信号MPG文字图形图像动画视频音频+视频AudioVedioInformationEND1.1什么是媒体音频数字信号、压缩音频信号文字图形图像动画音频●声音●话音●音乐视频其实,我们生活的世界充满了各种声音:1.1什么是媒体听一听猜一猜---(事物)发出的---(怎样的)声音”1.1什么是媒体1.2多媒体概念Bove&Rhodes,1990:多媒体是综合使用文字、图形、声音、动画等多种媒体来传达讯息;Bunzel&Morris,1992:多媒体是指广泛意义上的电子产品,如音像印刷品等;PCMagazine,1992:多媒体计算机是硬件和软件的组合设备,结合了各种视觉和听觉媒介,能够产生令人印象深刻的效果;JamesE.Shuman,1997,MultimediainAction,p.5,“Multimediacanbedefinedasacomputer-basedinteractivecommunicationprocessthatincorporatestext,graphics,sound,animation,andvideo.

那么,“多媒体”又指的是什么呢? 目前国内外学者对此有多种认识,大致如下:1.2多媒体概念多媒体是从视频和计算机两个领域的需求出发,按照各自的技术思路和商业目的,殊途同归地发展而形成,因此很难形成共识。对“多媒体”的众多定义某种程度上看就像“瞎子摸象”,见解不同罢了!1.2多媒体概念

我们认为,“多媒体”就是Multiple种Media的组合与集成,是一种“人-机”交互式的信息交流和传播之媒体。 从另一个角度理解,所谓多媒体,就是:“多”:多种媒体表现、多种感官作用、多种设备、多学科交汇、多领域应用;“媒”:人与客观世界的交流中介;“体”:综合的、集成化、一体化。

把多媒体信息通过计算机进行加工处理后,再以单独或合成形式表现出来的一体化技术,就成为多媒体技术。1.2多媒体概念多样性:信息种类多样化。集成性:媒体种类一体化。多媒体技术能将各种不同的媒体信息有机地进行同步组合,形成一个完整的多媒体信息;把不同的媒体设备集成在一起,形成多媒体系统。交互性:人、机对话。随心所欲。

多媒体具有以下三点特征:1.3多媒体信息系统开发系统:具有多媒体应用的开发能力,系统配有功能强大的计算机、齐全的外部设备和多媒体演示著作工具。主要应用于多媒体应用制作、非线性编辑等。演示系统:可完成多种媒体的应用,并与网络连接。主要应用于产品展示和会议演示等。培训系统:以PC机为基础,配有CD-ROM驱动器、音响和图像接口控制卡连同相应的外设和网络。家庭系统:即家庭多媒体播放系统,即高档多媒体PC,常用于家庭学习、娱乐等。一、多媒体信息系统

利用计算机技术和数字通信网技术处理、控制多媒体信息。1.3多媒体信息系统二、多媒体计算机硬件系统1.3多媒体信息系统核心软件:包括多媒体操作系统和音/视频支持系统,或音/视频核心,或媒体设备驱动程序等。工具软件:包括多媒体数据处理软件、多媒体软件工作平台、多媒体软件开发工具和多媒体数据库系统等。应用软件:是综合运用多媒体工具软件而编辑的实用性多媒体软件系统,是最终用户使用的多媒体产品。三、多媒体计算机软件系统1.4多媒体技术发展历史

多媒体技术出现于1990年前后,从20世纪80年代初期至今,共经历了三个阶段:孕育阶段(20世纪80年代初期——90年代初期)问世阶段(20世纪90年代初期——中期)发展阶段(20世纪90年代中期——今)1.4多媒体技术发展历史一、孕育阶段:交互式视频(Interactivevideo)内涵:具有声像并茂、形象生动呈现优势的录像视频技术与具有交互功能的计算机技术两大分支正在相互渗透,趋于融合。特点:由模拟转向数字化;由字符方式、文本处理向图形方式、声音和图像处理发展。1.4多媒体技术发展历史二、问世阶段:多媒体(Multimedia)内涵: 计算机领域中的媒体与电视领域中的媒体有机结合,且具有交互功能。特点:电视设备(摄像机、录像机、监视器等)充当了计算机外部设备的角色;传统的视频编辑、特技设备却被计算机的专业软件所取代;计算机中可播放视频、音频信号,在视频设备(如VCD)中增加微机软硬件,也能对播放的图像、声音实现互动控制。1.4多媒体技术发展历史三、发展阶段

3C(Computer,Consumer,Communication)一体化。内涵:计算机、广播电视和通信等领域正在互相渗透,趋于融合。特点:信息家电化、家电智能化、三网(计算机网、通信网、有线电视网)互相渗透。1.4多媒体技术发展历史1.4多媒体技术发展历史1.5研究内容与关键技术

从应用的角度来看,多媒体技术的研究领域概括体现在以下两个方面:以计算机技术为基础,扩展到声像、通信等领域,如计算机电视;是以声像、通信技术为基础,扩展到计算机领域,如电视计算机。1.5研究内容与关键技术Who?What?Where?Why?How?1.5研究内容与关键技术数据压缩与编码;多媒体数据存储;媒体输入/输出技术,包括媒体变换技术、识别技术、媒体理解技术和综合技术等;多媒体系统软件技术;多媒体通信技术;超文本和Web技术;多媒体专用芯片技术;多媒体应用开发和编著工具;虚拟现实技术。一、主要研究内容1.5研究内容与关键技术(一)传统关键技术 传统多媒体关键技术主要集中在以下4个领域:数据压缩技术大规模集成电路(VLSI)制造技术大容量光盘存储器(CD-ROM)实时多任务操作系统二、关键技术1.5研究内容与关键技术(二)当前多媒体关键技术 当前用于互联网络的多媒体关键技术,按层次分为:媒体处理与编码技术;多媒体系统技术;多媒体信息组织与管理技术;多媒体通信网络技术;多媒体人机接口虚拟现实技术;多媒体应用技术。1.5研究内容与关键技术

有学者认为,多媒体关键技术还应包括以下几个方面:多媒体同步技术;多媒体操作系统技术;多媒体中间件技术;多媒体交换技术;多媒体数据库技术;超媒体技术;基于内容检索技术;多媒体通信中的QOS管理技术;多媒体会议系统技术;多媒体视频点播与交互电视技术;虚拟实景空间技术等。1.6多媒体技术标准

多媒体是一项包括计算机、电视、通信、电子产品等领域的综合性技术,实现标准化和兼容性是多媒体技术及其产业迅速发展的关键。 针对不同的应用目的,多媒体的标准可以分为两类:以计算机为中心,强调多媒体信息的存储和回放;以通信为基础,更多强调在通信网上多媒体信息的传输。

1990年以来,国际上已推出了用于多媒体数据描述和处理器硬件方面的多个标准。1.6多媒体技术标准标准发布时间目标ITU-T1990,12H.261建议1994.11H.2621996.3H.2631998.1H.263+2003.5H.264电视会议与可视电话运动图像及其伴音通用编码标准甚低码率通信的视频编码标准压缩率最高的视频压缩标准JPEG1991,3JPEG2001JPEG2000彩色与灰度图像的压缩可伸缩图像编码MPEG1992MPEG-11993.11MPEG-21999MPEG-42001MPEG-72003.5MPEG-4AVC2005MPEG-211.5Mb/s运动图像与伴音数字电视,DVD多媒体应用标准多媒体内容描述接口标准压缩率最高的视频压缩标准多媒体框架标准AVS2006AVSVideo中国视音频压缩标准1.6多媒体技术标准一、低层编码标准H.261(系列)标准:由可视电话编码专家组研制的,主要用于可视电话等视听业务网络系统,对不同线路具有广泛的适应能力。JPEG标准:由联合图片编码专家组开发的,主要解决静态图像压缩问题。MPEG标准:由运动图像专家编码组提出,包括MPEG1、MPEG2两部分。其目标是要达到和超过现行电视画面的质量水平。1.6多媒体技术标准二、用于网络和软件操作控制方面的高层标准MHEG标准:由多媒体与超媒体信息编码专家组研制。HiTime标准:由音乐描述标准工作组开发。1.6多媒体技术标准三、多媒体个人机的标准IBM公司的多媒体个人机标准:针对Microsoft公司而建立的高性能、商业化通用多媒体个人机标准。QuickTime标准:由Apple公司提出,为用户提供一个处理位图图像、声音、动画和其它多媒体信息的统一接口和文件格式,使复杂的视频编辑成为可能,可用于电视和电影的后期制作。MPC标准:一种基于对多媒体功能最低要求的标准,专为MicrosoftWindow、多媒体扩充版环境下的应用而设立。1.6多媒体技术标准 Microsoft、Philips、NEC等公司组成了多媒体个人计算机MPC(MultimediaPersonalComputer)市场委员会,对个人计算机增加多媒体功能所需的软硬件进行最低标准的规范,规定多媒体个人计算机硬件设备和操作系统等的量化标准,制定高于MPC基本标准的升级规范,制定了MPC三项基本标准(MPC-1/2/3)。四、MPC标准1.6多媒体技术标准MPC-1标准设备 标准配置 推荐配置CPU 386SX 386DXor486SX时钟

16MHz内存 2MB 4MB硬盘 30MB 80MB接口 串行、并行、游戏棒接口MIDI MIDI合成、混音接口显示 VGA模式,分辨率640×480,16色 256色激光驱动器 单速CD-ROM,数据传输速率150KByte/s声音输入/重放 mV级灵敏度输入,耳机、扬声器输出声卡 8bit/11.025kHz采样,11.025和22.05kHz输出操作系统 DOS3.1版本或以上,Windows3.0带多媒体扩展模块1991年公布1.MPC-1标准1.6多媒体技术标准设备 标准配置 推荐配置CPU 486SXor兼容CPU 486DXorDX2时钟

25MHz内存 4MB 8MB硬盘 160MB 400MB接口 串行、并行、游戏棒接口MIDI MIDI合成、混音接口显示 VGA模式,分辨率640×480,256色

65536色激光驱动器 倍速CD-ROM,数据传输速率300KByte/s声音输入/重放 mV级灵敏度输入,耳机、扬声器输出声卡 16bit采样,11.025、22.05kHz和

44.1kHz输出操作系统 DOS3.1版本或以上,Windows3.1带多媒体扩展模块1993年5月公布2.MPC-2标准1.6多媒体技术标准设备 标准配置

CPU PentiumCPU或兼容CPU

时钟

75MHz内存 8MB

硬盘 540MB

接口 串行、并行、游戏棒接口MIDI MIDI合成、混音接口显示 VGA模式,分辨率640×480,64K色激光驱动器 4倍速CD-ROM,数据传输速率600KByte/s视频播放 NTSC制:30帧/秒,分辨率352×240

PAL制:24帧/秒,分辨率352×288

数据格式:MPEG-1压缩格式1995年6月公布3.MPC-3标准1.7多媒体应用领域一、教育电子备课、网络教学模拟教、学CAI(计算机辅助教学):以演示为主;CAL(计算机辅助学习):从辅助教转向辅助学为主;CBI(计算机化教学);CBL(计算机化学习);CAT(计算机辅助训练);CMI(计算机管理教学);模拟交互过程、仿真工艺过程1.7多媒体应用领域人类能保留20%看到的事物;30%听到的声音;50%看到且听到的东西;80%同时看到、听到且有相对应动作的行为。1.7多媒体应用领域二、商业广告平面印刷广告公共招贴广告大型显示屏广告影视商业广告1.7多媒体应用领域三、多媒体通信视频会议可视电话远程医疗交互电视Internet国际互联网1.7多媒体应用领域四、影视娱乐业电视/电影/卡通混编特技演艺界MTV特技制作三维成像模拟特技仿真游戏1.7多媒体应用领域五、人工智能与虚拟现实图像识别与跟踪语音识别与定位场景模拟与合成三维重建与仿真1.7多媒体应用领域 1.三维重建1.7多媒体应用领域2.开发多媒体内容描述辞典“熊猫”在网上通常没有文字描述,而在辞典中通常又只有文字解释。如果使用既有文字描述又有熊猫低层特性描述的“多媒体内容描述辞典”,无疑将有助于提高检索“猫熊”词条的查全率和查找精度。1.7多媒体应用领域 3.图像处理1.7多媒体应用领域 4.多媒体数据检索相似性计算1.7多媒体应用领域5.汽车多媒体

防盗系统、智能操控转盘、三维影音系统、话音识别系统、驾驶座声场模拟系统、声感录音等。1.7多媒体应用领域6.多媒体技术发展对著作权制度的冲击 多媒体技术的发展对著作权制度产生了多方面的影响,我国《著作权法》要进一步完善,已从多方面进行了修订。1.8发展方向与趋势

总的来看,多媒体技术正向三个方向发展:网络化。与宽带网络通信等技术相结合,使多媒体技术进入科研设计、企业管理、办公自动化、远程教育、远程医疗、检索咨询,文化娱乐、自动测控等领域;终端部件化、操作智能化、结构嵌入化。提高计算机系统本身的多媒体性能,开发智能化家电。 例如,有关图像信息处理技术的研究已经不再停留在信号特征层面,而是发展到了对图像内容的理解,这对于提高图像信息在网络上的传输速度和提高压缩效率非常重要。1.8发展方向与趋势

三维化。将计算机视觉技术和图形学技术的内容结合起来,即增强现实技术。将现场图像和计算机生成图像叠加在一起,使多媒体的应用效果产生极大的改观,应用范围也随之拓展。作业

查阅资料,掌握什么是媒体、多媒体、流媒体和超媒体?

下次课提问考核方式平时成绩

占30%,共100分,采用扣分制,直至扣完。旷课、严重违反课堂纪律:10分/次;病、事假等普通缺勤:5分/次作业、实验报告等,“优秀”不扣分,以下情况依次扣分: 良好:1分/次 中等:2分/次 及格:3分/次 不及格:5/次期末考试

占70%,以课堂讲义为主。笔试闭卷多媒体开发与编程2-1格式文本控制

选择文本字体设置文本属性文本输出2.1文本图形

在开发基于GDI的Windows程序时,要绘制各种各样的图形,如文本、点、线、矩形、位图等。 从本质上说,在Windows下,屏幕上显示的任何东西都可看成是图形。 文本含有3个方面的内容:符号符号的字型和字体在数据传送和操作管理中的符号编码2.2选择文本字体

字体描述了所要显示的文本大小、类型和外形。 字体分为物理字体和逻辑字体。物理字体是为特殊设备设计的,是设备相关的;逻辑字体是设备无关的,可以精确标度。

VisualC++提供了丰富的字体控制功能,不仅可以使用Windows提供的字体,还可以自己创建字体,能最大限度地满足了用户对复杂文本的输出要求。2.2选择文本字体 Windows系统提供了一些库存字体,对于大多数应用程序,使用库存字体即可完成基本的文本输出功能。 要想使用库存字体,需要使用CDC函数SelectStockObject来完成。

SelectStockObject函数的原型如下:virtualCGdiObject*SelectStockObject(intnIndex);

其中,参数nIndex指明预定义对象的类别。下表列举了几种常见的Windows字体。一、使用系统字体2.2选择文本字体字体名称说明ANSI_FIXED_FONT基于Windows字符集的固定字宽的字体,通常使用Courier字体ANSI_VAR_FONT基于Windows字符集的变宽字体,通常使用MsSansSerif字体DEVICE_DEFAULT_FONT特定设备的默认字体。对于不同的设备,字体宽度可能不同OEM_FIXED_FONT在DOS窗口使用的字体,又称终端字体,是一种固定宽度的字体SYSTEM_FONT系统字体,是基于Windows字符集的变宽字体。系统使用该字体来显示窗口的标题、菜单和对话框中的文本DEFAULT_GUI当前GUI的默认字体SYSTEMWindows提供的可变宽度的字体2.2选择文本字体

例如:SelectStockObject(SYSTEM_FONT);

将把SYSTEM_FONT选入设备环境。 对显示器(输出设备)而言,SYSTEM_FONT是默认字体。2.2选择文本字体

逻辑字体使用通用术语来描述一个字符的宏观特性,而不能描述微观特性,因此没有足够的信息来显示字体,仅是从应用的角度描述一个字体。 当使用逻辑字体来描述文本时,GDI将根据逻辑字体的描述选配最接近的物理字体进行输出。 创建自定义字体并不是创建一种新的字体,而是创建一种逻辑字体,再由字体映射器按逻辑字体给出的字体特性选择与之匹配的物理字体。二、使用自定义逻辑字体2.2选择文本字体

要创建字体,首先声明一个CFont对象来表示逻辑字体,然后初始化CFont对象。 常见的初始化方法有以下几种。(1)用CFont的CreatePointFont函数直接创建逻辑字体。原型为:

BOOLCreatePointFont(intnPointSize, LPCTSTRlpszFaceName,CDC*pDC=NULL);

参数nPointSize指定字体高度,它以1/10点数为一个单位。1点=0.013837inch。例如,若该值为120,则字体的高度为12点; 字体的名称由参数lpszFaceName指定。2.2选择文本字体

例如下面的代码:

CClientDCdc(this); //声明客户区设备环境变量dc CFontfont; //声明逻辑字体变量font font.CreatePointFont(120,"Arial",&dc); //初始化逻辑字体font font.DeleteObject(); //删除所建立的字体2.2选择文本字体(2)用CFont的CreateFont函数直接创建逻辑字体。原型为:

BOOLCreateFont( intnHeight, //字体高度

intnWidth, //字符平均宽度

intnEscapement, //文本行角度

intnOrientation, //字符角度

intnWeight, //字符粗细度

BYTEbItalic, //斜体

BYTEbUnderline, //下划线2.2选择文本字体BYTEcStrikeOut, //删除线BYTEnCharSet, //字符集BYTEnOutPrecison, /字体输出结果和要求的匹配程度BYTEnClipPrecison, //如何裁剪落于裁剪区之外的字符BYTEnQuality, //字体属性匹配的精确程度BYTEnPitchAnFamily, //字体间距和字体簇BYTElpszFacename //字体名称);2.2选择文本字体(3)用CFont的CreateFontIndirect函数创建逻辑字体。原型如下:BOOLCreateFontIndirect(constLOGFONT*lpLogFont);

参数lpLogFont是一个LOGFONT结构指针,用以设置逻辑字体的特征。

LOGFONT结构定义见下页。 当使用完毕,必须先将创建的这种Cfont对象选出设备环境,然后将其删除。2.2选择文本字体typedefstructtagLOGFONT{ LONGlfHeight; LONGlfWidth; LONGlfEscapement; LONGlfOrientation; LONGlfWeight; BYTElfItalic; BYTElfUnderline; BYTElfStrikeOut; BYTElfCharSet; BYTElfOutPrecision; BYTElfClipPrecision; BYTElfQuality; BYTElfPitchAndFamily; TCHARlfFaceName[LF_FACESIZE];}LOGFONT;2.3设置文本属性一、设置文本颜色 调用SetTextColor函数来设置文本的颜色:virtualCOLORREFSetTextColor(COLORREFcrColor);

参数crColor用于指定新的文本颜色。 例如要将文本颜色设为红色,可以用以下语句:SetTextColor(RGB(255,0,0)); //设置文本为红色 若要获取获取当前文本颜色,可使用GetTextColor函数。2.3设置文本属性2.设置文本背景色 默认情况下,文本背景颜色是白色。 可以使用SetBkColor函数来设置新的背景颜色。 例如要将背景颜色设为红色,可以用以下语句:SetBkColor(RGB(255,0,0);2.3设置文本属性3.控制文本背景色 在设备描述表中有两项可以影响背景:一个是背景色,另一个是背景模式。 背景模式可以为透明的(Transparent)或不透明的(Opaque),默认为不透明的。 当背景模式为不透明时,按背景颜色的值填充字符的空余部分,如果背景模式为透明的,将不用背景颜色填充,保留屏幕上原来的颜色。2.3设置文本属性

背景模式可用函数SetBkMode来设置,它设置当前的背景模式并返回原来的背景模式,该函数的原型为:intSetBkMode(intnBkMode);

参数nBKMode指定背景模式,其值可以是OPAQUE或者TRANSPARENT:如果值为OPAQUE,则显示时背景都改变为当前背景颜色;如果值为TRANSPARENT,则不改变背景颜色,此时任何SetBkColor函数调用都无效,默认的背景模式为OPAQUE。2.3设置文本属性4.设置文本排列方式 文本的排列方式控制文本和给定点的相对位置。 在一个图形中加字符说明时,常常知道一个字符串的某一个边界,如左边界不应超过某个位置,或右边界不应超过某个位置,或显示的几行字符串的中心点对齐等。 利用SetTextAlign函数就能方便地实现这种控制。UINTSetTextAlign(UINTnFlags);

其中,参数nFlags为文本的对齐方式,其值见下表。2.3设置文本属性标志值涵义TA_BASELINE将点同所选字体的基线对齐TA_CENTER将点同边界矩形的水平中心对齐TA_LEFT将点同边界矩形的左边线对齐TA_RIGHT将点同边界矩形的右边线对齐TA_TOP

将点同边界矩形的顶线对齐TA_BOTTOM 将点同边界矩形的底线对齐TA_UPDATECP更新X坐标,新X坐标为输出文本右边界TA_NOUPDATECP不更新当前坐标,这是默认选择2.4文本输出有两个函数可以实现文本输出:TextOutExtTextOut2.4文本输出 virtualBOOLTextOut(intx,inty,LPCSTRlpszString,intnCount); BOOLTextOut(intx,inty,constCString&str);返回值:如果成功,则返回非零值,否则为0。参数:x:指定文本起点的X逻辑坐标;y:指定文本起点的Y逻辑坐标;lpszString:要绘制的字符串的指针;nCount:字符串中的字节数;Str:包含字符的CString对象。2.4文本输出

除了前面已经学过的TextOut函数外,常见的还有ExtTextOut函数,该函数的原型为:BOOLExtTextOut{ intx,inty; //输出的位置

UINTnOptions; //指定矩形的类型

LPCRECTlpRect; //输出的字符的矩形区域

constCString&str; //输出的字符

LPINTlpDxWidths; //字符间距};2.4文本输出

该函数用来在一个给定的矩形lpRect区域内输出字符串str。 参数nOptions主要设置矩形的类型,可以为ETO_OPAQUE和ETO_CLIPPED两个值的一个或两个组合;

lpDxWidths是一个指向整数数组的指针,此数组中存放以逻辑单位表示的字符间的距离,第n个数代表第n个和n+1个字符之间的距离,该参数为NULL时,则按默认值处理。2.5一个例子

设计一个实例,用以说明如何使用CDC类显示字体。(1)创建一个SDI项目工程MyFont。(2)在……函数中添加如下代码:请同学们思考?2.5一个例子 …… CFontm_Font; CFont*pOldFont; CStringcaption="HelloWorld!"; pDC->SelectStockObject(SYSTEM_FONT); pDC->SetTextAlign(TA_LEFT); pDC->SetBkMode(TRANSPARENT); pDC->SetTextColor(RGB(255,0,0)); pDC->SetBkColor(RGB(0,0,255)); 2.5一个例子 pDC->TextOut(50,50,caption); m_Font.CreatePointFont(200,"华文彩云"); pOldFont=pDC->SelectObject(&m_Font); pDC->SetTextColor(RGB(255,255,255)); char*caption1="您好,河海大学的博士朋友们!"; pDC->ExtTextOut(50,100,ETO_OPAQUE,CRect(50,90, 380,150),caption1,strlen(caption1),NULL); pDC->SelectObject(pOldFont);

……第1个参数:所需字体高度(用0.1点表示,200表示20点字体)。第2个参数:定义字体名称。练习:

新建一个SDI工程MyFont2,要求:在View中显示“您好,我是XXX!”。文本在View内自左向右循环滚动;文字在红、蓝、绿、黄四种颜色之间周期变化。红(255,0,0)蓝(0,255,0)绿(0,0,255)黄(255,255,0)提示:以第②个为例:(1)定义二个变量:

intI; CRectRectTemp;(2)在OnShowWindow函数中添加如下代码:

I=0; SetTimer(1,30,NULL); (3)在OnTimer中添加代码:

I++; InvalidateRect(NULL,TRUE);(4)在OnDraw函数中添加代码

GetClientRect(RectTemp); if(RectTemp.Width()<50+I*10) I=0; pDC->TextOut(50+I*10,100,"snjojosjos");思考题:

如何把文本显示在客户区中央位置?GetTextExtent(LPCTSTRlpszString,intnCount)GetClientRect(LPRECTlpRect)多媒体开发与编程2-2图形绘制

图形与图形学图形构成图形点阵算法图形操作2.1图形与图形学

计算机图形学的研究对象是图形。 广义的说,能够在人的视觉系统中形成视觉印象的客观对象都可称为图形,既包括各种几何图形以及由函数式、代数方程和表达式所描述的图形,也包括来自各种输入媒体的图景、图片、图案、图像以及形体实体等。

图形是传递信息的最主要方式之一,具有其它方式无可比拟的直观生动性。一、图形2.1图形与图形学图形信息具有以下特点:表达直观,易于理解。在科学技术高度发达的今天,图形信息显示出任何语言无法比拟的优越性,它能直接反映出客观世界变幻无穷的图像,供全人类所共享,不受语言限制。表示准确、精练。图形给人一瞬间把握整体的特点,它比文字更加简明精练,而文字要逐字逐句逐段联系起来才能理解,真是“一幅图胜过千言万语”。2.1图形与图形学图形信息能“实时”地反应过程的变化规律。连续变化的图形信息能更“实时”地反映生产和科学研究与实验过程,并从中发现起决定作用的因素和关系。图形信息的信息量较大。 “一幅图胜过千言万语”,这从另外一个角度也说明图形中包含的信息量较大,因此,图形如何在计算机中表示,也是计算机图形学研究的内容之一。2.1图形与图形学 1962年,MIT林肯实验室的IvanE.Sutherland发表了一篇题为《Sketchpad:一个人机交互通信的图形系统》的博士论文,首次使用了计算机图形学“ComputerGraphics”这个术语,确定了计算机图形学作为一个新的学科分支的独立地位。二、计算机图形学1.历史渊源2.1图形与图形学 20世纪70年代是计算机图形学发展过程中一个重要的历史时期,具有实际应用价值的CAD图形系统出现了。

1974年,美国国家标准化局(ANSI)在ACMSIGGRAPH的一个“与机器无关的图形技术”的工作会议上,提出了制定有关标准的基本规则。 此后,ACM专门成立了一个图形标准化委员会。2.1图形与图形学 ISO随后又发布了:计算机图形接口CGI(ComputerGraphicsInterface);计算机图形元文件标准CGM(ComputerGraphicsMetafile);计算机图形核心系统GKS(GraphicsKernelSystem);面向程序员的层次交互图形标准PHIGS

(Programmer’sHierarchicalInteractiveGraphicsStandard) 等一系列标准。2.1图形与图形学计算机辅助设计(CAD)与计算机辅助制造(CAM)是计算机图形学在工业界最广泛、最活跃的应用领域。2.图形学应用传统的机械加工过程2.1图形与图形学计算机集成制造系统(CIMS)2.1图形与图形学快速自动成型制造(RPM-RapidProtypingManufacturing)系统2.1图形与图形学2.1图形与图形学计算机绘图 图形、图表和模型图等的绘制是计算机图形学应用中的另一个重要方面。2.1图形与图形学2.1图形与图形学科学计算可视化,在计算机上通过模拟图形进行模拟试验。科学计算可视化的简单例子二次方程可视化;4D分形的3D投影;(c)x2+y2=z2的可视化;(d)数学函数曲线2.1图形与图形学地形地貌与海洋图(a)一个凹坑的地貌图;(b)Oslo部分地形地貌图;(c)海洋温度的可视化2.1图形与图形学计算机模拟与仿真2.1图形与图形学过程控制2.1图形与图形学计算机辅助教学(CAI)2.1图形与图形学计算机动画2.1图形与图形学计算机艺术2.1图形与图形学人体造型与动画2.1图形与图形学医疗卫生方面的应用2.1图形与图形学真实感图形显示2.1图形与图形学人机交互技术 人机交互技术(Human-computerInteractionTechniques)是通过计算机输入/输出设备,以有效的方式实现人与计算机对话的技术。人机交互技术是计算机用户界面设计中的重要内容之一。它与认知学、人机工程学、心理学等学科领域有密切关系。2.1图形与图形学虚拟现实 虚拟现实的特征(VR)有四个主要特征,用以区别相邻技术,如计算机图形学、多媒体技术、仿真技术、科学计算可视化技术等。这四个主要特征分别是:多感知性(Multi-Sensation)。沉浸感(Immension)。交互性(Interaction)。自主性(Autonomy)。2.1图形与图形学VR系统的模型与组成(a)VR系统的模型;(b)典型VR系统的组成2.1图形与图形学图形图像技术的融合 计算机图形学研究如何从计算机模型出发,把真实的或想像的物体图形描绘出来。而图像处理中的图像重建进行的却是与此相反的过程,它是基于画面进行二维或二维物体模型的重建,这在很多场合都是十分重要的。如高空监测摄影、宇航探测器收集到的月球或行星的慢速扫描电视图像、工业机器人“眼”中测到的电视图像、染色体扫描、X射线图像、断层扫描、指纹分析等,都需要图像处理技术。2.2图形构成

点阵图形可以比全屏幕显示的点阵图形小,也可以比全屏幕显示的点阵图形大。一、点阵图形1.点阵图形的大小图形可以分成点阵图形和向量图形两大类型。2.2图形构成

点阵图形的几何形状就是相当于在一张方格绘图纸上绘图。只不过在显示器上这些方格非常小,肉眼很难区分。 需要指出的是,这些方格可以是矩形,即长宽比不一定是1。2.像素点形状2.2图形构成

从第一行的第1个开始,依次是第2个,第3个,……,直到第一行的最后一个; 然后是第二行各像素点,第三行各像素点,……,直到最后一行像素点。 在保存各像素点的信息时,只要按如上顺序存储,则在读出点阵图形的信息时,根据相应信息的顺序位置数,即可判断出相应的像素点在点阵图形中的位置。 因此,各像素点在点阵图形中的位置不需要存储空间。2.像素点位置2.2图形构成

假设图形的大小是M×N,那么它的点阵共有N行M列,每个像素点的位置就由它所在的行和列的位置惟一确定。4.坐标系统2.2图形构成5.BMP文件结构BMP文件可看成由3部分构成:BITMAPFILEHEADERBITMAPINFO数据点阵2.2图形构成

向量图形: 比如对于由一条直线段构成的图形,我们只需要知道直线段的起点和终点,直线段上的其它所有点都可以通过直线段的数学模型由计算机自动给出。 这种方式给出了一种不同于点阵图形表示的图形生成方法:给出一些基本的数据,并以此为依据由计算机用一定的命令程序去生成图形。二、矢量图形1.矢量图形表示2.2图形构成

工程用图: 大多是由一些基本的几何图形构成的,如平面上的点、线、圆以及椭圆等,空间的长方体、球体等,以及一些用复杂的数学模型描述的图形,如各种各样的流线型物体等。 复杂图形的描述可通过足够多的基本几何图形的组合给出。2.2图形构成

需要指出的是:当图形比较简单时,向量图的优点十分明显:绘一条直线段,只需要两个端点;绘一个圆,只需要圆心和半径。如果用点阵图表示,就需要绘出直线段或圆上的每一点。但对于一个复杂的图形,向量图形会变得非常复杂,需要给出许许多多的基本图形,许许多多的生成各种基本图形的命令。而点阵图形的表示并没有变得更加复杂。2.2图形构成

向量图形由各个基本图形构成,因此一般来说,各个基本图形有各自独立的颜色。也就是说,在我们用点阵图形的形式表示出一个向量图形时,构成向量图形的某个基本图形(如直线段、圆、正方形等)的所有点应有一个颜色。 基于这样一种考虑,在描述一个基本图形(如直线段、圆、正方形等)时,同时要描述其相应的颜色。2.矢量图形的颜色2.2图形构成

注意: 无论采用什么样的颜色模式,描述向量图的文件的大小没有变化(除非是单色图,可以省略对图形颜色的描述)。 相比较而言,点阵图形的颜色信息是加在每一个像素点上的,颜色模式越复杂,颜色信息越多,表示点阵图形的文件就越大。2.2图形构成

向量图形文件一般采用DXF格式(绘图互换格式)。

DXF作为一种元图语言(MetafileGraphicsLanguage),可允许用户把绘出的图用于其它应用或是其它操作系统。 典型的有AutoCAD绘制系统。 大多数的CAD软件,在各种平台上可以在不同程度上操作DXF格式。即使不是CAD专业应用,如向量编辑程序或一些桌面出版软件等,也都使用DXF格式。2.矢量图形文件格式2.2图形构成向量图:尺寸可任意变化而不损失图像的质量。向量命令只是简单地命令输出设备创建一个给定大小的图形物体,而采用尽可能多的“点”。换句话说,输出设备输出的“点”越多,同样大小物体的图形就越光滑细腻。点阵图形:详细规定了生成的像素点数,像素点数不随输出设备的分辨率的增加而增加。因此其光滑度就会受到输出图形的设备分辨率和点阵图形本身的分辨率的双重限制。三、矢量图形与点阵图形的对比1.图形整体放大2.2图形构成

向量图形是通过数据描述的,因此向量图的放大/缩小首先表现为数据的放大/缩小。 而且,放大/缩小后的数据是可以复原的。这就意味着放大/缩小后的向量图形是可以复原的。图形具有这样的性质似乎是理所当然的。 点阵图形却不具有这样的性质,图形缩小后,由于一些细节的消失而模糊不清。2.图形缩小2.2图形构成

向量图中可以只编辑其中某一个单个物体而不影响图中的其它物体。 局部放大也常见于很多图形处理及浏览阅读软件中,用于放大显示观察对象看不清楚的局部的细节。2.图形的局部放大2.3点阵图形的基本算法一、直线算法直线是用一系列靠近直线的像素点来逼近的。对生成直线的要求是:直线要直(即逼近程度好);起点和终点位置要准确(否则会在直线连接处出现间隙);线上各点亮度要均匀(即要求点的密度要均匀,否则给人一段亮一段暗的感觉);画线速度要快(与直线生成算法和计算机速度均有关)。2.3点阵图形的基本算法从图中可见,只有当直线是水平的(如AB)、垂直的(如AC)或与水平线成45°(如AD)时,由像素点拼成的图形才是真正的直线,其他位置的直线(如AE)都呈阶梯形,这种现象称为阶梯效应。研究直线的生成就要减少这种阶梯效应。2.3点阵图形的基本算法

以增量DDA算法为例。 设直线的起点坐标为(xs,ys),终点坐标为(xe,ye),则直线的方程为:

y=mx+b

2.3点阵图形的基本算法

其中,直线的斜率为

在y轴上的截距为

给定直线的两个端点坐标后,求得m和b;然后在xs≤x≤xe范围内对x均匀取整数,进行浮点乘法和加法运算,求得y值后再取整数值即可得到需要的直线上的像素点。2.3点阵图形的基本算法

改进算法是:给定直线的两个端点坐标后,求得m和b;当|m|≤1时,在xs≤x≤xe范围内将x取整数,进行浮点乘法和加法运算,求得y值后再取整数值;当|m|>1时,则y先取整数,再求得x值后再取整数值。 可以认为直线图形上的点是由有先后顺序的一列像素点构成的,相邻的两点应满足:

yi+1=yi+m(xi+1-xi)2.3点阵图形的基本算法

其中,(xi,yi)是第i步求得的像素点坐标,(xi+1,yi+1)是第i+1步求得的像素点坐标。类似前面的分析,我们应要求 并且要求其较大者就是1。也就是说,如果|m|≤1,则要求2.3点阵图形的基本算法

如果|m|>1,则要求

(a)|m|≤1的情况: 在xe-xs≥0时,有

xi+1=xi+1,yi+1=yi+m

在xe-xs≤0时,有

xi+1=xi-1,yi+1=yi-m2.3点阵图形的基本算法 (b)|m|>1的情况: 在ye-ys≥0时,有

yi+1=yi+1,

xi+1=xi+1/m

在ye-ys≤0时,有

yi+1=yi-1,xi+1=xi-1/m

2.3点阵图形的基本算法下面用伪代码给出DDA算法。ProcedureDDA-line(xs,ys,xe,ye)BEGIN /求线段在两坐标轴方向改变量的较大者/ IFABS(xe-xs)>=ABS(ye-ys)THEN length=ABS(xe-xs);

ELSE length=ABS(ye-ys);

ENDIF2.3点阵图形的基本算法 /定义dx或dy中的较大值为1/ dx=(xe-xs)/length;

dy=(ye-ys)/length;

x=xs+0.5*SIGN(dx);

y=ys+0.5*SIGN(dy);

i=1;

WHILE(i<length) PLOT(INTEGER(x),INTEGER(y));2.3点阵图形的基本算法 x=x+dx;

y=y+dy;

i=i+l;

ENDWHILEEND2.3点阵图形的基本算法

其中,函数SIGN()是符号函数,其表达式为:

用DDA算法表示的直线如图2.3所示。

2.3点阵图形的基本算法用DDA算法表示的直线

(a)实际要求的直线及其近似点

(b)离散化后用像素点表示的直线2.3点阵图形的基本算法二、圆的算法

1.直角坐标方法

假设圆的圆心在坐标原点,半径为R,于是可得其方程为

x2+y2=R2

解出y:2.3点阵图形的基本算法四分之一圆弧的离散表示

圆弧曲线;

圆弧的离散表示。2.3点阵图形的基本算法

作为整圆部分的圆弧也可利用对称性算出,只是这时算出一段八分圆弧后不需要全部的对称点。圆弧八分对称性关系示意图2.3点阵图形的基本算法2.折线逼近法 圆可以用其内接正多边形来逼近,用从折线逼近一段圆弧。 假设圆弧的起始和终止角分别为ts和te,半径为R,用折线代替圆弧容许的最大误差为ε。 如果用n段等长折线来逼近圆弧,则每段圆弧曲线对应的圆弧角度为δ=(te-ts)/n。 当δ充分小时,圆弧和对应弦的最大误差是:2.3点阵图形的基本算法为了使e≤ε,把δ代入上式后得到2.3点阵图形的基本算法假设: 要画一个半圆弧,其半径R=256个像素点单位,于是圆弧的角度为te-ts=π。 若要求误差不超过两个像素点单位,即ε≤2,则所需要的折线段n为:2.3点阵图形的基本算法

即用13段折线来逼近这个半圆弧。 那么如何求折线段的端点位置呢?我们知道圆的参数方程为 对圆弧来说,参数t∈[ts,te],而每一折线端点处的参数为

ti=ts+iδi=0,1,2,…,n

因此,各折线段的端点坐标为2.3点阵图形的基本算法显然,直接利用下式求折线的端点的计算是很费时的。为此,我们根据相邻折线段的端点间的递推关系来递推地计算折线段的端点:2.4区域填充

一个区域是一组相互连通的像素点集合。而像素点之间的连通方式可分为如下两类:

(1)四连通。两个像素点是上下或左右相连的。

(2)八连通。两个像素点是上下或左右相连的,或者是对角线方向相连的。逐点填充扫描线填充图案填充2.5图形变换

几何变换投影变换裁剪变换视口变换2.6图形剪裁

平面上的图形受该平面上的矩形窗口的裁剪。点剪裁线剪裁多边形剪裁练习:

新建一个SDI项目MySDI_1,实现正方形的绘制。2.7图形设备接口

任何图形(图像在某种程度上也可看做为图形)的显示输出都离不开图形设备接口(GraphicDeviceInterface,GDI),使用GDI绘制的图形具有设备无关性,操作系统屏蔽了硬件设备的差异,用户编程时无需考虑特殊的硬件设置,因而在屏幕窗口内绘图与在打印机上绘图是相似的,具有“所见即所得”的性质。 利用GDI开发图形程序,可以使得程序员专注于程序的开发,而不必考虑底层的硬件问题。一、GDI接口2.7图形设备接口 GDI并不直接完成图形绘制工作,它提供一种独立于设备的仲裁机制,接收应用程序通过GDI函数发来的请求,经过翻译之后将这些请求传送给相应的设备驱动程序,再由设备驱动程序驱动相应的硬件设备,完成与具体硬件有关的输出。2.7图形设备接口

基于GDI绘图,一般需要具备两个要素:设备描述表绘图工具 如果把程序员比做画家,那么设备描述表就是画布,绘图工具就是画家手中的画笔、画刷、调色板等工具。2.7图形设备接口二、设备描述表 设备描述表就是窗口的客户区,提供绘图的场地和环境。 每个窗口对象都提供了一个设备环境(DeviceContext,DC),是应用程序与外部设备之间的桥梁,如下图。 设备环境的本质是结构体,包含背景色等区域窗口信息。 见下表。2.7图形设备接口设备环境桥梁作用示意图2.7图形设备接口2.7图形设备接口 Windows系统为每个窗口建立了一个PAINTSTRUCT结构:TypedefstructtagPAINTSTRUCT{ HDChdc; //设备环境句柄

BOOLfErase; //一般取真值,表示擦除无效矩形的背景

RECTrcPaint; //无效矩形标识

BOOLfRestore; //系统保留

BOOLfIncUpdate; //系统保留

BYTErgbReserved[16]; //系统保留}PAINTSTRUCT;2.7图形设备接口

获取设备环境是应用程序输出图形的先决条件,常用的两种方法是调用BeginPaint或GetDC函数。应用程序响应WM_PAINT消息进行图形刷新时,通过调用BeginPaint函数获取设备环境。由BeginPaint函数获取的设备环境要用EndPaint函数释放。如果绘图工作并不是由WM_PAINT消息驱动的,则调用GetDC函数获取设备环境。而由GetDC函数获取的设备环境必须用ReleaseDC函数释放。2.7图形设备接口三、绘图工具 绘图工具有时也称为绘图对象,使用它们可以在Windows设备环境中绘制具有各种效果的图形。 任何一个画家,不论他的技艺有多么高超,若没有绘图工具,都无法在画布上画图。 当设备环境所提供的默认绘图工具不能满足需求时,就需要修改绘图工具,达到绘制丰富多彩图形的目的。

Windows的绘图工具包括画笔、画刷、字体、位图、调色板和区域。在MFC中这些绘图工具被封装到相应的类中。2.8映像模式一、逻辑坐标与设备坐标 在GDI绘制函数中,使用的是一种逻辑坐标;当将结果输出到某个物理设备上时,需要将逻辑坐标转换成设备坐标。(1)逻辑坐标。逻辑坐标与设备无关,是内存中虚拟的坐标,一个像素为一个逻辑单位。逻辑坐标是实现“所见即所得”的基础,设计人员只要使用合适的映射模式,并不需要考虑面向何种设备。(2)设备坐标。图形输出时要将逻辑坐标映射为设备坐标。在所有的设备坐标系统中,单位以像素点为准,水平值从左到右增大(正方向向右),垂直值从上到下增大(正方向向下)。2.8映像模式坐标名称包含区域坐标原点工作区坐标应用程序的客户区域客户区域左上角窗口坐标一个程序的整个窗口,包括标题条、菜单、滚动条和窗口框等窗口左上角屏幕坐标包括整个屏幕屏幕左上角3种设备坐标2.8映像模式

当在Windows窗口中绘图时,绘图的坐标原点在屏幕的左上角,任何物体在屏幕上定位都要参考这个坐标原点。在笛卡儿坐标系统中这个点被定义为坐标原点(0,0),水平坐标轴的正方向是从该点出发向右延伸的,垂直坐标轴的正方向是从该点出发向下延伸的。2.8映像模式2.8映像模式

有时为了程序设计的方便,习惯上将逻辑坐标所在的坐标系称为窗口,对应程序员在逻辑坐标系上设定的区域,是一个虚拟区域,它可以被激活、失效、在屏幕上移动和改变大小等。对应地,将设备坐标所在的坐标系称为视口,对应程序员在实际输出设备上设定的区域。窗口依赖于逻辑坐标,可以是像素点、毫米或其他尺度。

这一点需牢记,这对于理解下面的有关内容至关重要。2.8映像模式二、坐标映射 映像模式定义了Windows如何将GDI函数中指定的逻辑坐标映射为设备坐标,如何将逻辑单位转化为设备的度量单位以及设备的x方向和y方向,用户可在一个统一的逻辑坐标系中操作而不必考虑输出设备的坐标系情况。 常用的映像模式,见下表。2.8映像模式映像模式一个逻辑单位映射为坐标系设定备注MM_ANISOTROPIC系统确定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.8映像模式

应用程序可获取设备环境的当前映像模式,并根据需要设置映像模式。设置映像模式 设置设备环境的映像模式可使用SetMapMode函数:intSetMapMode(HDChdc,intfnMapMode);

其中,参数hdc用来标识设备环境;参数fnMapMode为映像模式的整型标识符。2.8映像模式获取映像模式 如果想要获取当前设备环境的映像模式,可用GetMapMode函数,其函数原型如下:intGetMapMode(HDChdc);

若调用成功,则返回一个映像模式值; 否则返回0。2.8映像模式三、设置窗口区域

可用SetWindowExtEx函数,原型如下:BOOLSetWindowExtEx(HDChdc, //设备环境句柄

intnXExtent, //以逻辑单位表示的新窗口区域的XintnYExtent, //以逻辑单位表示的新窗口区域的YLPSIZElpSize //保存旧窗口区域尺寸的SIZE结构地址);2.8映像模式四、设置视口区域 若要设置视口区域,则使用SetViewportExtEx函数,其函数原型如下:BOOLSetViewportExtEx(HDChdc, //设备环境句柄

intnXExtent, //以物理设备单位表示的新视口区域的XintnYExtent, //以物理设备单位表示的新视口区域的YLPSIZElpSize //保存旧视口区域尺寸的SIZE结构地址);2.9三基色与调色板

人眼视网膜上的锥状细胞有3种类型:红敏细胞、绿敏细胞和蓝敏细胞。国际照明委员会规定了R、G、B这3种光为基色:R为红光,波长为700.0nm,基色单位当量为1;G为绿光,波长为546.1nm,基色单位当量为4.5907;B为蓝光,波长为435.8nm,基色单位当量为0.0601。 当量是指用指定三基色配出标准白光时,RGB三基色的光的比例,这里为1∶4.5907∶0.0601。 三色系数的比例决定所配彩色光的颜色,它们的数值决定所配彩色光的亮度。RGB也称为颜色F的三基色分量或三基色坐标。2.9三基色与调色板要素组成颜色RGB红25500蓝02550绿00255黄2552550紫2550255青0255255白255255255黑000灰1281281282.9三基色与调色板

根据常识,彩色图像要比黑白图像大得多。显然,由于数据量大增,显示真彩色会使系统的整体性能迅速下降。 为了解决这个问题,使用调色板来限制颜色的数目。 调色板实际上是一个有256个表项的RGB颜色表,颜色表的每项是一个24位的RGB颜色值。使用调色板时,在视频内存中存储的不是24位颜色值,而是调色板的4位或8位的索引。这样一来,显示器可同时显示的颜色被限制在256色以内,对系统资源的耗费大大降低了。2.9三基色与调色板调色板工作原理2.9三基色与调色板

每个设备环境都拥有一个逻辑调色板,默认逻辑调色板只有20种保留颜色,因此需要创建新的逻辑调色板,并选入到设备环境中,实现到系统调色板中,此时Windows将会建立一个调色板映射表,GDI函数绘图时会查询该映射表,把像素值从逻辑调色板的索引转换成系统调色板的索引。2.9三基色与调色板调用函数功能函数返回值HPALETTECreatePalette(CONSTLOGPALETTE*lplgpl)创建逻辑调色板逻辑调色板句柄HPALETTESelectPalette(HDChdc,HPALETTEhpal,BOOLbForceBackground);把逻辑调色板选入到要使用它的设备环境中。之前的逻辑调色板UINTRealizePalette(HDChdc);把逻辑调色板实现到系统调色板中被实现的数目2.9三基色与调色板

在调用GDI函数绘图时,Windows用COLORREF数据类型来表示颜色,并提供了3个宏来构建3种不同的COLORREF数据:COLORREFRGB(BYTEbRed,BYTEbGreen,BYTEbBlue); //RGB引用COLORREFPALETTEINDEX(WORDwPaletteIndex); //调色板索引引用COLORREFPALETTERGB(BYTEbRed,BYTEbGreen,BYTEbBlue); //调色板RGB引用2.10MFC对GDI的封装

为便于用户在Windows下编写基于GDI的应用程序,MFC对设备描述表和绘图工具这两个要素进行了全面封装。一、CDC类

CDC类定义了设备描述表对象,提供在显示器、打印机或Windows客户区绘图的方法。

CDC封装了使用设备环境的GDI函数,所有的绘图操作都直接或间接运用了CDC的成员函数。2.10MFC对GDI的封装派生类涵义CPaintDC仅在WM_PAINT消息需要响应时才起作用,通常在OnPaint响应函数中使用CClientDCCClientDC类只能在客户区绘图CWindowDCCWindowDC允许在显示器的任意位置绘图,坐标原点在整个窗口的左上角CMetaFileDC创建一个元文件,可看做是一个屏幕设备,但其实它是一个磁盘文件从CDC类派生出4个子类2.10MFC对GDI的封装 CDC类提供了两个数据成员m_hDC和m_hAttribDC。成员名称涵义m_hDCCDC对象使用的输出设备环境m_hAttribDCCDC对象使用的属性设备环境2.10MFC对GDI的封装

在由AppWizard创建的MFC应用程序中,View类的OnDraw成员函数是一个处理图形的关键虚函数,它带有一个指向设备环境对象的指针pDC,MFC的绘图大多都是通过pDC这个指针来加以访问的。二、CGdiObject类

Windows的绘图工具包括画笔、画刷、字体和调色板等。

MFC将这些绘图工具封装到相应的CGdiObject类中,并由之派生出6个子类。2.10MFC对GDI的封装派生类简介CFont封装有GDI字体,建立和控制“字体”对象,可选择设备描述表的当前字体CPen封装有GDI画笔,建立和控制“画笔”对象,可选择设备描述表的当前画笔CBrush封装有GDI画刷,建立和控制“刷子”对象,可选择设备描述表的当前画刷CBitmap封装有GDI位图,建立和控制“位图”对象,提供了一个操作位

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论