本书从基本概念入手,循序渐进,既有必要的理论知识的铺垫,又重点突出了对读者实践技能的培养与训练,适用于本科院校来自理工类多媒体技术开发类课程,也可供广大程序设计爱好者和工程360百科技术人员参考使用。
- 书名 多媒体开发与编程
- 作者 于永彦, 关明山, 王娅茹
- 出版社 北京大学出版社
- ISBN 978-7-301-18514-8
内容简介
随着计算机应用领域的日益扩大,多媒体技术已经渗透到人们生产生活中的各个领来自域。本书主要讲述多媒360百科体技术的基础理论与典型技术,首先介绍如何运用GDI、OpenGL、Direct随矛新继别缺月的厂步及X、3DMAX等工具获取文本、声音、图形/图像和视频等多媒体信息,重点介绍如何基于Visual C++6.0环境对媒体信息进行诸如图像增强、语音合成、视频播放等的基本理论与技术,最后,基于改进型Access数据库平台,通过一个实例详细讲解如何编写简单的而仍深报露研水该多媒体数据应用程序。
本书从基本概念入手,循序渐进,既有必要的理论知识的铺垫,又重点突出了对读者实践技能的培养与训练,南叫四困适用于本科院校理工类多媒体技术开发类课程,也可供广大程序设计爱好者和工程技术人员参考使用。
图书信息
图书在版编目(CIP)数据
多媒体开发与编程 / 于永彦, 关明山, 王娅茹主编
. -- 北京 : 北京大学出版社, 2011.2
21世纪全国应用型本科计算机案例采某言冷七台型规划教材
ISBN 97将室际主配够探8-7-301-18514-8
Ⅰ. ①多…Ⅱ. ①于…②关…③王…Ⅲ. ①多媒体
技术-软件开发-高等学校-教材②多媒体技术-程序设
计-高等学校-教材Ⅳ. ①TP37
书 名:多媒体开发与编程
著作责任者:于永彦 关明山 王娅茹 主编
责任编辑:郑 双
标准书号:ISBN 978-7-301-18514-8
自条出 版 者:北京大学出版社
地 址:北京市海淀区成府路况判脸何年水括听区脚205号 100871
规 格:787毫米×1092毫米 16开本 19.75 印张 449千字
前言
自从1946年第一台计算机诞生以来,人们便有一个近乎执着的梦想:让计算机叫机占按照人的意愿接受、处理声音和图像信息,从而使生来自活变得丰富多彩。这就是人类关于多媒体的最初遐想。1985年美国Commodore公司首次推出百没陈带曾洋了Amiga多媒体计算机,虽然还很稚嫩,但标志着多虽促请绿零媒体理念已经从理想走进了现实。随着交互式光盘系统、数字影像系统360百科的相继出现,多媒体技术的理论将比如定连促观须够体系初具雏形。1990年,由Microsoft、Philips等数十家IT巨头发起成立了多媒体个人计算机市场协会(Multimedia Personal Computer,MPC),制定了MPC普龙团商被鲁义千案民技术规范,迎来了多媒体发展的黄金时期。另一方面,伴随着计算机从象牙塔的专用研究工具逐步进入寻常百姓家,加上Windows等视窗系统对家庭娱乐功能的强势支持,多媒体的影响已渗透到人们生产、生活的方方面面,在诸如军事模拟、交通监控、医学图像、辅助教学、文化娱乐等领域得到西选集协迫游了广泛的应用。
多媒体技术的飞速发展与理论体系的日益完善,带动了语音信号处理、数字图像处理、视频通信等相关学怎死体宁握多路验去负手科的发展,目前有很多高校开设了类似的专业,同时涌现出了一的批优秀的多媒体方面的教辅教材。令人稍感遗憾的是,多数教材要么重点介绍多媒体技术的理论知识,要么是基于Visual C++、Visual Basic等某种具体的开发工具,大多变成为介绍该工具的开发技术了。为此,作者从实际需要出发,在充分调研的基础上,通过近三年的教学实践浓化什合,摸索出一条改革思路,即仅以Visua仅包飞座千始尔l C++为必备的基础开发环境,尝试运用GDI、OpenGL、3DMAX、DirectX、Speech API等工具实现文本、声音、图形/图像、视频等基本媒体信息的获取,重点介绍图形松专局银补采菜课校读谓绘制、图像增强、语音合成、视频播放等剧限五双师印父爱县内克基本理论与典型技术。
本书在内容安排上按照由浅入深、由简剂镇容到繁、由个体到系统的基本思路来组织素材,力求在理论讲解上既不空洞又有趣味,在技术实现上要求可操作型强,让读者一看就懂、一试就成功,目的是激发读者的尝试欲望,培养、提高实践能力。第1章扼要介绍了多媒体技术的发展历史、研究内容与热点技块移济职术,让读者在宏观上对多媒体七诉领域有一个清晰的认矿治雨息飞溶针坏识。第2、3、4章介绍了三种不同的媒体信息获取与处理的函数工具,其中第2章从最基本的点、线、面等概念入手,介绍文本、图念血听右层进士形等最基本的媒体种类,重点讲解如何使用GDI技术开发绘图程序。而第3章则着重介绍OpenGL的基本图元、图形变换、光照材质、纹理映射等基本概念,再通过具体实科们音备宣为段例讲解如何基于Glut、Win32 API和MFC环境开发简单的OpenGL应用程序。第4章介绍了目前较为流行的DirectX的概念,包括Direct3D设备管理、应用程序结构、基本图元绘制以及在Visual C++下的配置技巧等,也是通过完整的例程讲解如何在Win32、MFC下创建Direct3D程序,实现三角形和圆锥的绘制。第5章简单介绍了3DS文件结构,以及如何读取3DS文件内容,控制3DS模型。第6章首先介绍数字图像的基本概念,重点介绍BMP文件结构及显示技术,在通过实例介绍如何实现图像平滑和图像锐化。第7章介绍了WAVE文件格式及播放方法、SAPI函数库与语音合成概念,重点是讲解如何使用MCI编写简易音频播放器。第8章介绍了DirectShow的结构组成、基本功能以及配置方法,设计了一个实用视频播放器。第9章介绍数据库、ODBC基本概念,以及使用ACCESS创建数据库的方法,最后设计了一个简易多媒体数据库应用程序,把前面各章的知识串联成一条主线,帮助读者构建完整的知识架构。
本书由于永彦、关明山、王娅茹编写,于永彦负责统稿。其中,第1、3、5、6、7、9章由于永彦编写,第2、4章由关明山编写,第8章由王娅茹编写。
本书的编写得到了很多热心人士的帮助与支持,感谢淮阴工学院计算机工程学院的领导及各位同仁,感谢他们为全书的整体性构思提供了许多建设性的建议,感谢他们为本书提供了试用平台,并提出了许多宝贵的修改建议。还有其他为本书进行过文字校对、编辑排版的老师、同学,此处不再一一列出,在此一并表示最诚挚的谢意!
虽然编者主观上做了最大的努力,但由于本身的水平有限,加上时间仓促,教学改革的力度又较大,难免存在这样或那样的一些不足。"他山之石,可以攻玉",真诚地希望使用或阅读本书的读者给予批评指正,不吝赐教。
作 者
2010年11月2日 于淮安
目录
第1章 绪论.... 1
1.1 什么是媒体... 1
1.1.1 媒体的定义... 1
1.1.2 常见媒体... 2
1.2 多媒体与多媒体技术... 4
1.2.1 多媒体概念... 4
1.2.2 多媒体技术... 4
1.2.3 多媒体技术的发展... 5
1.3 多媒体技术研究内容... 6
第2章 Windows图形基础... 8
2.1 图形概念... 8
2.1.1 矢量图... 8
2.1.2 位图... 9
2.2 图形设备接口... 10
2.2.1 设备描述表... 11
2.2.2 绘图工具... 12
2.3 坐标与映射... 13
2.3.1 逻辑坐标与设备坐标... 13
2.3.2 坐标映射... 14
2.4 MFC对GDI的封装... 15
2.4.1 CDC类... 15
2.4.2 CGdiObject类... 17
2.5 三基色与调色板... 18
2.6 文本处理... 20
2.6.1 选择文本字体... 20
2.6.2 设置文本属性... 22
2.6.3 文本输出... 23
2.6.4 控制字体显示... 23
2.7 画笔与画刷... 24
2.7.1 画笔... 24
2.7.2 画刷... 26
2.8 基本图形的绘制... 27
2.8.1 绘图函数... 27
2.8.2 绘图模式... 31
2.8.3 一个绘制橡皮筋
直线的例子... 31
思考题... 33
第3章 基于OpenGL的图形绘制... 34
3.1 OpenGL概述... 34
3.1.1 OpenGL功能... 34
3.1.2 OpenGL特点... 35
3.1.3 OpenGL工作机理... 36
3.1.4 OpenGL基本语法... 37
3.2 OpenGL函数库... 38
3.2.1 基本库... 38
3.2.2 实用库... 42
3.2.3 辅助库... 43
3.3 OpenGL建模... 46
3.3.1 基本图元... 46
3.3.2 绘制基本图元... 46
3.4 图形变换... 50
3.4.1 相机模型... 50
3.4.2 矩阵操作... 51
3.4.3 视点变换... 52
3.4.4 模型变换... 53
3.4.5 投影变换... 53
3.4.6 视口变换... 56
3.5 光照与材质... 56
3.5.1 光照模型... 56
3.5.2 明暗处理... 58
3.5.3 材质... 59
3.6 纹理映射... 61
3.6.1 使用纹理对象... 61
3.6.2 指定纹理... 62
3.6.3 纹理滤波... 63
3.6.4 设置映射方式... 63
3.6.5 生成纹理坐标... 63
3.7 曲线和曲面... 64
3.7.1 绘制曲线... 64
3.7.2 构造曲面... 66
3.7.3 图元逼近法绘制3D
物体... 67
3.8 颜色管理... 67
3.8.1 RGBA模式... 68
3.8.2 颜色表模式... 68
3.9 基于GLUT的OpenGL
程序设计... 68
3.9.1 GLUT函数库... 69
3.9.2 使用GLUT绘制
三角形... 72
3.10 基于Win32的OpenGL
程序设计... 74
3.10.1 创建程序框架... 74
3.10.2 头文件和全局变量... 76
3.10.3 定义WinMain()函数... 76
3.10.4 定义CreateGL
Window()函数... 77
3.10.5 定义WndProc()函数... 79
3.10.6 定义KillGL
Window()函数... 80
3.10.7 定义InitGL()函数... 81
3.10.8 定义ReSizeGLScene()函数... 82
3.10.9 定义DrawGL
Scene()函数... 82
3.11 基于MFC的OpenGL
程序设计... 83
3.11.1 构造OpenGL环境... 83
3.11.2 创建OpenGL
程序的基本步骤... 85
思考题... 88
第4章 基于Direct3D的图形绘制... 89
4.1 DirectX概述... 89
4.2 DirectX SDK安装和配置... 90
4.2.1 安装DirectX SDK.. 90
4.2.2 基于Visual C++ 6.0
环境配置DirectX.. 93
4.3 Direct3D设备... 94
4.3.1 设备类型... 94
4.3.2 创建设备... 95
4.3.3 选择设备... 97
4.4 基本图元... 98
4.4.1 点... 98
4.4.2 线... 98
4.4.3 三角形... 99
4.5 Direct3D应用程序结构... 101
4.5.1 创建窗口... 102
4.5.2 初始化Direct3D.. 103
4.5.3 消息循环处理... 104
4.5.4 图形绘制... 105
4.6 基于Win32创建Direct3D
程序... 107
4.6.1 创建MyD3D_1项目... 108
4.6.2 代码分析... 110
4.7 基于MFC创建Direct3D
程序... 111
4.7.1 创建MyD3D_2项目... 111
4.7.2 构建Direct3D
程序框架... 112
4.7.3 绘制三角形... 114
4.7.4 绘制圆锥... 117
思考题... 121
第5章 3DMAX模型显示与控制... 122
5.1 3DMAX概述... 122
5.1.1 版本更替概况... 122
5.1.2 基本工作流程... 123
5.2 3DS文件结构... 124
5.2.1 导出3DS文件格式... 124
5.2.2 3DS文件块
层次结构... 124
5.2.3 对象块EDIT_
OBJECT. 127
5.3 3DS文件读取类CLoad3DS. 131
5.3.1 定义数据结构信息... 131
5.3.2 定义C3DSReader类... 133
5.3.3 设计CTriList类... 144
5.3.4 设计CTriObject类... 146
5.4 基于MFC读取3DS文件... 150
5.4.1 创建一个SDI工程... 150
5.4.2 修改CMy3DSLoader
View类... 150
5.5 控制3DS模型... 154
5.5.1 增加数据成员... 155
5.5.2 增加成员函数... 155
5.5.3 添加鼠标事件
响应函数... 156
5.5.4 修改RenderScene()
函数... 157
思考题... 158
第6章 图像处理基础... 159
6.1 概述... 159
6.1.1 图像处理... 159
6.1.2 数字图像... 160
6.1.3 数字图像处理... 162
6.2 数字图像文件格式... 163
6.2.1 常用图像格式... 163
6.2.2 位图格式... 164
6.2.3 BMP文件结构... 166
6.3 位图显示... 168
6.3.1 显示DDB位图... 168
6.3.2 显示DIB位图... 170
6.4 图像平滑... 178
6.4.1 图像增强... 178
6.4.2 图像平滑... 179
6.4.3 低通滤波器... 181
6.4.4 软件设计... 182
6.5 图像锐化... 189
6.5.1 微分法... 189
6.5.2 高通滤波器... 190
6.5.3 软件设计... 191
思考题... 194
第7章 音频处理与语音合成... 196
7.1 声音、语音与音频... 196
7.1.1 声音... 196
7.1.2 语音... 196
7.1.3 音频... 197
7.2 WAVE文件格式... 198
7.2.1 RIFF格式... 198
7.2.2 WAVE文件格式... 199
7.3 音频文件的播放... 200
7.3.1 使用简单的播放
函数播放声音文件... 200
7.3.2 将声音文件加入
到程序资源中... 202
7.4 媒体控制接口编程... 204
7.4.1 媒体控制接口简介... 204
7.4.2 设计简易音频
播放器... 208
7.5 语音合成... 213
7.5.1 认识SAPI214
7.5.2 什么是语音合成... 215
7.5.3 设计简易语音
合成系统... 216
思考题... 221
第8章 基于DirectShow实现
视频播放... 222
8.1 什么是DirectShow.. 222
8.2 DirectShow系统结构... 223
8.3 基于Visual C++ 6.0配置
DirectShow.. 226
8.4 视频概述... 228
8.5 CDXGraph类... 230
8.5.1 基本步骤... 230
8.5.2 设计CDXGraph类... 230
8.6 设计简易视频播放器... 244
8.6.1 创建工程
MyDirectShow_1. 244
8.6.2 修改MyDirect
Show_1Dlg类... 245
思考题... 249
第9章 多媒体数据库编程... 250
9.1 概述... 250
9.1.1 数据管理方式的
发展... 250
9.1.2 数据库与数据库
系统... 252
9.1.3 数据库系统的
体系结构... 254
9.1.4 数据模型与
数据模式... 256
9.1.5 多媒体数据库的
诞生... 260
9.1.6 多媒体数据模型... 261
9.1.7 多媒体数据库系统的
体系结构... 263
9.1.8 多媒体数据库的
实现... 264
9.2 创建数据库... 266
9.2.1 创建空数据库... 266
9.2.2 创建数据表... 267
9.3 ODBC基础... 268
9.3.1 什么是OBDC.. 269
9.3.2 注册ODBC.. 270
9.3.3 封装ODBC.. 273
9.4 创建简易多媒体数据库
应用程序... 278
9.4.1 创建应用程序框架... 278
9.4.2 CMyDB2Set类... 279
9.4.3 视图设计... 281
9.4.4 为CMyDB2View类
声明数据成员... 286
9.5 创建事件响应函数... 287
9.5.1 初始化... 287
9.5.2 编写"添加"按钮
响应函数... 289
9.5.3 编写"浏览照片"
响应函数... 290
9.5.4 编写"修改"按钮
响应函数... 291
9.5.5 编写"确认"、"撤销"
按钮响应函数... 291
9.5.6 编写"删除"按钮
响应函数... 292
9.5.7 编写导航按钮
响应函数... 292
思考题... 294
实验一 实用图形绘制系统... 295
一、实验目的与要求... 295
二、实验仪器与设备... 295
三、实验内容与步骤... 295
四、思考题... 295
五、实验小结... 295
参考文献 296