本書從基本概念入手,循序漸進,既有必要的理論知識的鋪墊,又重點突出了對讀者實踐技能的培養與訓練,適用於本科院校理工類多媒體技術開發類課程,也可供廣大程式設計愛好者和工程技術人員參考使用。
基本介紹
- 書名:多媒體開發與編程
- 作者:於永彥, 關明山, 王婭茹
- ISBN:978-7-301-18514-8
- 出版社:北京大學出版社
內容簡介,圖書信息,前言,目錄,
內容簡介
隨著計算機套用領域的日益擴大,多媒體技術已經滲透到人們生產生活中的各個領域。本書主要講述多媒體技術的基礎理論與典型技術,首先介紹如何運用GDI、OpenGL、DirectX、3DMAX等工具獲取文本、聲音、圖形/圖像和視頻等多媒體信息,重點介紹如何基於Visual C++6.0環境對媒體信息進行諸如圖像增強、語音合成、視頻播放等的基本理論與技術,最後,基於改進型Access資料庫平台,通過一個實例詳細講解如何編寫簡單的多媒體數據應用程式。
本書從基本概念入手,循序漸進,既有必要的理論知識的鋪墊,又重點突出了對讀者實踐技能的培養與訓練,適用於本科院校理工類多媒體技術開發類課程,也可供廣大程式設計愛好者和工程技術人員參考使用。
圖書信息
圖書在版編目(CIP)數據
多媒體開發與編程 / 於永彥, 關明山, 王婭茹主編
. -- 北京 : 北京大學出版社, 2011.2
21世紀全國套用型本科計算機案例型規劃教材
ISBN 978-7-301-18514-8
Ⅰ. ①多…Ⅱ. ①於…②關…③王…Ⅲ. ①多媒體
技術-軟體開發-高等學校-教材②多媒體技術-程式設
計-高等學校-教材Ⅳ. ①TP37
書 名:多媒體開發與編程
著作責任者:於永彥 關明山 王婭茹 主編
責任編輯:鄭 雙
標準書號:ISBN 978-7-301-18514-8
出 版 者:北京大學出版社
地 址:北京市海淀區成府路205號 100871
規 格:787毫米×1092毫米 16開本 19.75 印張 449千字
前言
自從1946年第一台計算機誕生以來,人們便有一個近乎執著的夢想:讓計算機按照人的意願接受、處理聲音和圖像信息,從而使生活變得豐富多彩。這就是人類關於多媒體的最初遐想。1985年美國Commodore公司首次推出了Amiga多媒體計算機,雖然還很稚嫩,但標誌著多媒體理念已經從理想走進了現實。隨著互動式光碟系統、數字影像系統的相繼出現,多媒體技術的理論體系初具雛形。1990年,由Microsoft、Philips等數十家IT巨頭髮起成立了多媒體個人計算機市場協會(Multimedia Personal Computer,MPC),制定了MPC技術規範,迎來了多媒體發展的黃金時期。另一方面,伴隨著計算機從象牙塔的專用研究工具逐步進入尋常百姓家,加上Windows等視窗系統對家庭娛樂功能的強勢支持,多媒體的影響已滲透到人們生產、生活的方方面面,在諸如軍事模擬、交通監控、醫學圖像、輔助教學、文化娛樂等領域得到了廣泛的套用。
多媒體技術的飛速發展與理論體系的日益完善,帶動了語音信號處理、數字圖像處理、視頻通信等相關學科的發展,目前有很多高校開設了類似的專業,同時湧現出了一批優秀的多媒體方面的教輔教材。令人稍感遺憾的是,多數教材要么重點介紹多媒體技術的理論知識,要么是基於Visual C++、Visual Basic等某種具體的開發工具,大多變成為介紹該工具的開發技術了。為此,作者從實際需要出發,在充分調研的基礎上,通過近三年的教學實踐,摸索出一條改革思路,即僅以Visual 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