很多人第一次接觸到DirectX大都是通過游戲,至于安裝、升級(jí)DirectX的原因無非是滿足游戲運(yùn)行的需要。Direct X其實(shí)是微軟公司推出的一個(gè)為Windows平臺(tái)的多媒體API函數(shù)庫,它提供標(biāo)準(zhǔn)接口來與顯卡和聲卡、輸入設(shè)備等進(jìn)行交互。如果沒有這組標(biāo)準(zhǔn)API函數(shù)庫,那你就需要為每一種顯卡、聲卡的每個(gè)組合和每種類型的鍵盤、鼠標(biāo)和游戲桿編寫不同的代碼。這不又回到了以前的Dos時(shí)代。為了解決這個(gè)問題,微軟公司推出了DirectX。DirectX從具體的硬件中抽象出來,并且將一組通用指令轉(zhuǎn)換成硬件的具體命令。這樣開發(fā)語言通過調(diào)用統(tǒng)一標(biāo)準(zhǔn)的Direct X函數(shù)庫就可以操作每一種顯卡、聲卡的每個(gè)組合和每種類型的鍵盤、鼠標(biāo)和游戲桿等多媒體了。
一.Direct X SDK 9.0安裝及類庫介紹:
.net Framework SDK中并沒有包含Direct X SDK,所以為了順利的完成本文后面介紹,
必須先下載、安裝Direct X SDK。具體的下載地址為:http://download.microsoft.com/download/a/c/d/acdfb557-266f-4af4-8673-6ab8009b4ddd/dxsdk_apr2005.exe。此版本是2005四月份推出的英文版。這并不妨礙下面的程序?qū)崿F(xiàn)。安裝完Direct X后,就會(huì)在存在"C:\WINDOWS\Microsoft.NET\Managed DirectX"這樣一個(gè)目錄,此目錄中目錄中應(yīng)該有九個(gè)DLL文件和九個(gè)XML文件。九個(gè)DLL文件大致對(duì)應(yīng)于DirectX中的十個(gè)命名空間。編程中就是使用其中的命名空間來提供對(duì)輸入設(shè)備、聲音、網(wǎng)絡(luò)播放、圖形等的支持。Direct X SDK 9.0中的定義的命名空間及其主要的作用具體如表01所示:
命名空間 描述
Microsoft.DirectX 公共類和數(shù)學(xué)結(jié)構(gòu)
Microsoft.DirectX.Direct3D 3D圖形和助手庫
Microsoft.DirectX.DirectDraw Direct Draw 圖形API。這是舊式命名空間,現(xiàn)在已經(jīng)不需要使用它。
Microsoft.DirectX.DirectPlay 用于多玩家游戲的網(wǎng)絡(luò)API
Microsoft.DirectX.DirectSound 聲音支持
Microsoft.DirectX.DirectInput 輸入設(shè)備支持(例如,鼠標(biāo)和游戲桿)
Microsoft.DirectX.AudioVideoPlayback 播放視頻和音頻(例如,在電腦上播放各自視頻動(dòng)畫文件)
Microsoft.DirectX.Diagnostics 疑難解答
Microsoft.DirectX.Security 訪問安全性
Microsoft.DirectX.Security.Permissions 訪問安全權(quán)限
表01:Direct X SDK9.0中的定義的命名空間及其主要的作用
Direct X內(nèi)容十分豐富,下文介紹的只是其中的一個(gè)小的應(yīng)用,即用Visual C#調(diào)用Direct X中的SDK來播放視頻文件為例子,程序中只使用了命名空間"Microsoft.DirectX.AudioVideoPlayback"。 Microsoft.DirectX.AudioVideoPlayback命名空間中定義了三個(gè)類:"Audio"、"Video"和"TextureRenderEventArgs"。其中前二個(gè)類是最常用的,分別用來支持音頻和視頻。Microsoft.DirectX.AudioVideoPlayback命名空間中定義的常用屬性及其具體的作用可參閱表02所示:
屬性 描述
Audio 獲取視頻文件中的音頻對(duì)象,可用來后續(xù)的音頻播放
Caption 獲取或設(shè)置在Form上播放視頻的名稱
CurrentPosition 獲取或設(shè)置播放視頻的當(dāng)前位置
DefaultSize 獲取播放視頻的缺省的視頻大小
Fullscreen 獲取或設(shè)置視頻文件是否在全屏模式下播放
IsCursorHidden 獲取播放的視頻時(shí)鼠標(biāo)的狀態(tài):隱藏或顯示
Owner 獲取或設(shè)置視頻播放的宿主組件
Paused 獲取當(dāng)前的播放狀態(tài)是否處于暫停狀態(tài)
Playing 獲取當(dāng)前的播放狀態(tài)是否處于播放狀態(tài).
SeekingCaps 獲取是否可以搜索性能
Size Retrieves and sets the size of the video for playback.
State 獲取當(dāng)前的播放狀態(tài)
Stopped 獲取當(dāng)前的播放狀態(tài)是否處于停止?fàn)顟B(tài)
StopPosition 獲取播放的視頻的停止播放位置
表02:Microsoft.DirectX.AudioVideoPlayback命名空間中定義的常用屬性及其具體的作用
Microsoft.DirectX.AudioVideoPlayback命名空間中定義的常用方法及其具體的作用可參閱表03所示:
方法 描述
HideCursor 隱藏當(dāng)前播放視頻的鼠標(biāo)
Open 裝入新的文件到Video對(duì)象中
Pause 設(shè)置為暫停播放狀態(tài).
Play 設(shè)置為播放狀態(tài)
SeekCurrentPosition 搜索轉(zhuǎn)入到制定的播放位置
SeekStopPosition 設(shè)置一個(gè)新的停止位置
ShowCursor 顯示當(dāng)前播放視頻的鼠標(biāo)
Stop 設(shè)置為停止播放狀態(tài)
Video 初始化一個(gè)新的Video實(shí)例
表03:Microsoft.DirectX.AudioVideoPlayback命名空間中定義的常用屬性及其具體的作用
了解了以上這些基礎(chǔ)知識(shí)后,下面就開始介紹Visual C#調(diào)用Direct X播放視頻文件的具體實(shí)現(xiàn)方法。
二.本文章的程序設(shè)計(jì)、調(diào)試和運(yùn)行的環(huán)境:
(1).微軟公司視窗2003中文企業(yè)版。
(2).Visual Studio .Net 2003企業(yè)構(gòu)建版,.Net FrameWork SDK 1.1版本號(hào)4322。
三.Visual C#使用Direct X的實(shí)現(xiàn)視頻播放
Visual C#使用Direct X的實(shí)現(xiàn)視頻播放難點(diǎn)無非以下幾點(diǎn):
1. 掌握在Visual C#引入Dirext X函數(shù)庫的方法。
2. 設(shè)置Direct X視頻播放的宿主組件。
3. 基本的播放命令的設(shè)置:播放、停止、暫停等。
下面就是Visual C#使用Direct X的實(shí)現(xiàn)視頻播放具體實(shí)現(xiàn)步驟:
1. 啟動(dòng)Visual Studio .Net。
2. 選擇菜單【文件】|【新建】|【項(xiàng)目】后,彈出【新建項(xiàng)目】對(duì)話框。
3. 將【項(xiàng)目類型】設(shè)置為【Visual C#項(xiàng)目】。
4. 將【模板】設(shè)置為【W(wǎng)indows應(yīng)用程序】。
5. 在【名稱】文本框中輸入【Visual C#中使用DriectX實(shí)現(xiàn)媒體播放】。
6. 在【位置】的文本框中輸入【E:\VS.net項(xiàng)目】,然后單擊【確定】按鈕。這樣在"E:\VS.NET項(xiàng)目"目錄中就創(chuàng)建了一個(gè)名稱為"Visual C#中使用DriectX實(shí)現(xiàn)媒體播放"的文件夾,里面存放的就是"Visual C#中使用DriectX實(shí)現(xiàn)媒體播放"項(xiàng)目的所有文件。
一.Direct X SDK 9.0安裝及類庫介紹:
.net Framework SDK中并沒有包含Direct X SDK,所以為了順利的完成本文后面介紹,
必須先下載、安裝Direct X SDK。具體的下載地址為:http://download.microsoft.com/download/a/c/d/acdfb557-266f-4af4-8673-6ab8009b4ddd/dxsdk_apr2005.exe。此版本是2005四月份推出的英文版。這并不妨礙下面的程序?qū)崿F(xiàn)。安裝完Direct X后,就會(huì)在存在"C:\WINDOWS\Microsoft.NET\Managed DirectX"這樣一個(gè)目錄,此目錄中目錄中應(yīng)該有九個(gè)DLL文件和九個(gè)XML文件。九個(gè)DLL文件大致對(duì)應(yīng)于DirectX中的十個(gè)命名空間。編程中就是使用其中的命名空間來提供對(duì)輸入設(shè)備、聲音、網(wǎng)絡(luò)播放、圖形等的支持。Direct X SDK 9.0中的定義的命名空間及其主要的作用具體如表01所示:
命名空間 描述
Microsoft.DirectX 公共類和數(shù)學(xué)結(jié)構(gòu)
Microsoft.DirectX.Direct3D 3D圖形和助手庫
Microsoft.DirectX.DirectDraw Direct Draw 圖形API。這是舊式命名空間,現(xiàn)在已經(jīng)不需要使用它。
Microsoft.DirectX.DirectPlay 用于多玩家游戲的網(wǎng)絡(luò)API
Microsoft.DirectX.DirectSound 聲音支持
Microsoft.DirectX.DirectInput 輸入設(shè)備支持(例如,鼠標(biāo)和游戲桿)
Microsoft.DirectX.AudioVideoPlayback 播放視頻和音頻(例如,在電腦上播放各自視頻動(dòng)畫文件)
Microsoft.DirectX.Diagnostics 疑難解答
Microsoft.DirectX.Security 訪問安全性
Microsoft.DirectX.Security.Permissions 訪問安全權(quán)限
表01:Direct X SDK9.0中的定義的命名空間及其主要的作用
Direct X內(nèi)容十分豐富,下文介紹的只是其中的一個(gè)小的應(yīng)用,即用Visual C#調(diào)用Direct X中的SDK來播放視頻文件為例子,程序中只使用了命名空間"Microsoft.DirectX.AudioVideoPlayback"。 Microsoft.DirectX.AudioVideoPlayback命名空間中定義了三個(gè)類:"Audio"、"Video"和"TextureRenderEventArgs"。其中前二個(gè)類是最常用的,分別用來支持音頻和視頻。Microsoft.DirectX.AudioVideoPlayback命名空間中定義的常用屬性及其具體的作用可參閱表02所示:
屬性 描述
Audio 獲取視頻文件中的音頻對(duì)象,可用來后續(xù)的音頻播放
Caption 獲取或設(shè)置在Form上播放視頻的名稱
CurrentPosition 獲取或設(shè)置播放視頻的當(dāng)前位置
DefaultSize 獲取播放視頻的缺省的視頻大小
Fullscreen 獲取或設(shè)置視頻文件是否在全屏模式下播放
IsCursorHidden 獲取播放的視頻時(shí)鼠標(biāo)的狀態(tài):隱藏或顯示
Owner 獲取或設(shè)置視頻播放的宿主組件
Paused 獲取當(dāng)前的播放狀態(tài)是否處于暫停狀態(tài)
Playing 獲取當(dāng)前的播放狀態(tài)是否處于播放狀態(tài).
SeekingCaps 獲取是否可以搜索性能
Size Retrieves and sets the size of the video for playback.
State 獲取當(dāng)前的播放狀態(tài)
Stopped 獲取當(dāng)前的播放狀態(tài)是否處于停止?fàn)顟B(tài)
StopPosition 獲取播放的視頻的停止播放位置
表02:Microsoft.DirectX.AudioVideoPlayback命名空間中定義的常用屬性及其具體的作用
Microsoft.DirectX.AudioVideoPlayback命名空間中定義的常用方法及其具體的作用可參閱表03所示:
方法 描述
HideCursor 隱藏當(dāng)前播放視頻的鼠標(biāo)
Open 裝入新的文件到Video對(duì)象中
Pause 設(shè)置為暫停播放狀態(tài).
Play 設(shè)置為播放狀態(tài)
SeekCurrentPosition 搜索轉(zhuǎn)入到制定的播放位置
SeekStopPosition 設(shè)置一個(gè)新的停止位置
ShowCursor 顯示當(dāng)前播放視頻的鼠標(biāo)
Stop 設(shè)置為停止播放狀態(tài)
Video 初始化一個(gè)新的Video實(shí)例
表03:Microsoft.DirectX.AudioVideoPlayback命名空間中定義的常用屬性及其具體的作用
了解了以上這些基礎(chǔ)知識(shí)后,下面就開始介紹Visual C#調(diào)用Direct X播放視頻文件的具體實(shí)現(xiàn)方法。
二.本文章的程序設(shè)計(jì)、調(diào)試和運(yùn)行的環(huán)境:
(1).微軟公司視窗2003中文企業(yè)版。
(2).Visual Studio .Net 2003企業(yè)構(gòu)建版,.Net FrameWork SDK 1.1版本號(hào)4322。
三.Visual C#使用Direct X的實(shí)現(xiàn)視頻播放
Visual C#使用Direct X的實(shí)現(xiàn)視頻播放難點(diǎn)無非以下幾點(diǎn):
1. 掌握在Visual C#引入Dirext X函數(shù)庫的方法。
2. 設(shè)置Direct X視頻播放的宿主組件。
3. 基本的播放命令的設(shè)置:播放、停止、暫停等。
下面就是Visual C#使用Direct X的實(shí)現(xiàn)視頻播放具體實(shí)現(xiàn)步驟:
1. 啟動(dòng)Visual Studio .Net。
2. 選擇菜單【文件】|【新建】|【項(xiàng)目】后,彈出【新建項(xiàng)目】對(duì)話框。
3. 將【項(xiàng)目類型】設(shè)置為【Visual C#項(xiàng)目】。
4. 將【模板】設(shè)置為【W(wǎng)indows應(yīng)用程序】。
5. 在【名稱】文本框中輸入【Visual C#中使用DriectX實(shí)現(xiàn)媒體播放】。
6. 在【位置】的文本框中輸入【E:\VS.net項(xiàng)目】,然后單擊【確定】按鈕。這樣在"E:\VS.NET項(xiàng)目"目錄中就創(chuàng)建了一個(gè)名稱為"Visual C#中使用DriectX實(shí)現(xiàn)媒體播放"的文件夾,里面存放的就是"Visual C#中使用DriectX實(shí)現(xiàn)媒體播放"項(xiàng)目的所有文件。

