WPF多媒體各種功能詳解
WPF多媒體的使用,為用戶帶來非常好的使用效果。那么對(duì)于這一功能的具體含義,我們將在文章中做一個(gè)詳細(xì)的介紹,希望對(duì)大家有用。#t#
媒體 API
MediaElement 和 MediaPlayer 用于播放音頻、視頻以及包含音頻內(nèi)容的視頻。這兩種類型都可以以交互方式或時(shí)鐘驅(qū)動(dòng)方式進(jìn)行控制。這兩種類型都至少依賴 Microsoft Windows Media Player 10 OCX 進(jìn)行媒體播放。但這兩種 API 的用法因具體情況而異。
MediaElement 是一個(gè) UIElement,它受 布局系統(tǒng) 支持并可用作許多控件的內(nèi)容。它也可用在可擴(kuò)展應(yīng)用程序標(biāo)記語言 (XAML) 以及代碼中。另一方面,MediaPlayer 用于 Drawing 對(duì)象,因而缺少對(duì)布局的支持。只能使用 VideoDrawing 或通過直接與 DrawingContext 進(jìn)行交互來呈現(xiàn)使用 MediaPlayer 加載的媒體。不能在 XAML 中使用 MediaPlayer。
說明:
如果將媒體與應(yīng)用程序一起分發(fā),則不能將媒體文件用作項(xiàng)目資源。在項(xiàng)目文件中,必須將媒體類型改設(shè)為 Content,并將 CopyToOutputDirectory 設(shè)置為 PreserveNewest 或 Always。
媒體播放模式
說明:
MediaElement 和 MediaPlayer 具有類似的成員。本部分中的鏈接指的是 MediaElement 類成員。除非明確說明,否則鏈接到 MediaElement 類中的成員也可在 MediaPlayer 類中找到。
若要了解 Windows Presentation Foundation (WPF) 中的媒體播放,需要先了解可播放媒體的不同模式。MediaElement 和 MediaPlayer 可以用于兩種不同的媒體模式中:獨(dú)立模式和時(shí)鐘模式。媒體模式由 Clock 屬性確定。如果 Clock 為 null,則媒體對(duì)象處于獨(dú)立模式。如果 Clock 不為 null,則媒體對(duì)象處于時(shí)鐘模式。默認(rèn)情況下,媒體對(duì)象處于獨(dú)立模式。
獨(dú)立模式
在獨(dú)立模式下,由媒體內(nèi)容驅(qū)動(dòng)媒體播放。獨(dú)立模式實(shí)現(xiàn)了下列功能選項(xiàng):
可直接指定媒體的 Uri。
可直接控制媒體播放。
可修改媒體的 Position 和 SpeedRatio 屬性。
通過設(shè)置 MediaElement 對(duì)象的 Source 屬性或者調(diào)用 MediaPlayer 對(duì)象的 Open 方法來加載媒體。
若要在獨(dú)立模式下控制媒體播放,可使用媒體對(duì)象的控制方法。提供了下列控制方法:Play、Pause、Close 和 Stop。對(duì)于 MediaElement,僅當(dāng)將 LoadedBehavior 設(shè)置為 Manual 時(shí),使用這些方法的交互式控件才可用。當(dāng)媒體對(duì)象處于時(shí)鐘模式時(shí),這些方法將不可用。
時(shí)鐘模式
在時(shí)鐘模式下,由 MediaTimeline 驅(qū)動(dòng)媒體播放。時(shí)鐘模式具有下列特征:
媒體的 Uri 是通過 MediaTimeline 間接設(shè)置的。
可由時(shí)鐘控制媒體播放。不能使用媒體對(duì)象的控制方法。
可通過以下方法加載媒體:設(shè)置 MediaTimeline 對(duì)象的 Source 屬性,從時(shí)間線創(chuàng)建時(shí)鐘,并將時(shí)鐘分配給媒體對(duì)象。當(dāng)位于 Storyboard 中的 MediaTimeline 針對(duì) MediaElement 時(shí),也可用這種方法加載媒體。
若要在時(shí)鐘模式下控制媒體播放,必須使用 ClockController 控制方法。ClockController 是從 MediaClock 的 ClockController 屬性獲取的。如果嘗試在時(shí)鐘模式下使用 MediaElement 或 MediaPlayer 對(duì)象的控制方法,則會(huì)引發(fā) InvalidOperationException。

















