当前位置导航:炫浪网>>网络学院>>网页制作>>ASP.NET教程

WPF的多媒体开发

本主题将介绍 Windows Presentation Foundation (WPF) 的多媒体功能。使用多媒体功能可以将声音和视频集成到应用程序中,从而增强了用户体验。

媒体 API
MediaElement 和 MediaPlayer 用于播放音频、视频以及包含音频内容的视频。这两种类型都可以以交互方式或时钟驱动方式进行控制。这两种类型都至少依赖 Microsoft Windows Media Player 10 OCX 进行媒体播放。但这两种 API 的用法因具体情况而异。

MediaElement 是一个 UIElement,它受 布局系统 支持并可用作许多控件的内容。它也可用在可扩展应用程序标记语言 (XAML) 以及代码中。另一方面,MediaPlayer 用于 Drawing 对象,因而缺少对布局的支持。只能使用 VideoDrawing 或通过直接与 DrawingContext 进行交互来呈现使用 MediaPlayer 加载的媒体。不能在 XAML 中使用 MediaPlayer。

说明:
如果将媒体与应用程序一起分发,则不能将媒体文件用作项目资源。在项目文件中,必须将媒体类型改设为 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 属性,从时间线创建时钟,并将时钟分配给媒体对象。当位于 Storyboard 中的 MediaTimeline 针对 MediaElement 时,也可用这种方法加载媒体。

若要在时钟模式下控制媒体播放,必须使用 ClockController 控制方法。ClockController 是从 MediaClock 的 ClockController 属性获取的。如果尝试在时钟模式下使用 MediaElement 或 MediaPlayer 对象的控制方法,则会引发 InvalidOperationException。

MediaElement 类
向应用程序添加媒体的操作十分简单,只需向应用程序的用户界面 (UI) 添加 MediaElement 控件,并为要包含的媒体提供 Uri。Windows Presentation Foundation (WPF) 中支持 Microsoft Windows Media Player 10 所支持的所有媒体类型。下面的示例演示 MediaElement 在可扩展应用程序标记语言 (XAML) 中的简单用法。

 

 

在此示例中,媒体在加载后即会自动播放。播放完后,就会关闭媒体,并且会释放所有媒体资源(包括视频内存)。此行为是 MediaElement 对象的默认行为,由 LoadedBehavior 和 UnloadedBehavior 属性控制。

控制 MediaElement
当 IsLoaded 为 true 或 false 时,可分别使用 LoadedBehavior 和 UnloadedBehavior 属性控制 MediaElement 的行为。设置 MediaState 属性的目的是影响媒体播放行为。

共2页 首页 上一页 1 2 下一页 尾页 跳转到
相关内容
赞助商链接