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