您的位置:首页 > 其它

MSDN 教程短片 WPF 17(简单播放器的制作)

2011-01-24 08:23 567 查看

WPF做一个简单播放器

WPF中有个MediaPlayer类,它位于System.Windows.Media命名空间下。基于WindowsMediaPlayer构建起来的,所以下面做的播放器的前提是电脑上必须安装WindowsMediaPlayer10或更高版本。

一、打开vs,新建一个应用程序项目。

我们在窗体拖入一个MediaElement控件

<MediaElementName="mediaElement1"Margin="0,0,0,61">
</MediaElement>

下面我们来触发这个控件的播放。

<Grid.Triggers>
<EventTriggerSourceName="mediaElement1"
RoutedEvent="MediaElement.Loaded">
<EventTrigger.Actions>
<BeginStoryboardx:Name="sb">
<Storyboard>
<MediaTimeline
Source="xbox.wmv"
Storyboard.TargetName="mediaElement1"
RepeatBehavior="Forever"
/>
</Storyboard>
</BeginStoryboard>
</EventTrigger.Actions>
</Grid.Triggers>

这里我们在MediaElement.Loaded加载的时候开始显示。

这里要注意Source这里的xbox.wmv放在bin目录下。也可以用..\..\xbox.wmv来读取你放的位置。
这是可以按F5运行。





下面我们来增加些功能,比如加个暂停,重新开始,拖拉进度。

拖入两个Button按钮和一个Slider。
<ButtonHeight="23"HorizontalAlignment="Left"Margin="68,0,0,7"
Name="btnPause"VerticalAlignment="Bottom"Width="75">Pause</Button>
<ButtonHeight="23"Margin="162,0,126,7"Name="btnResume"
VerticalAlignment="Bottom">Resume</Button>
<SliderHeight="21"Margin="43,0,55,37"Name="timeSlider"
VerticalAlignment="Bottom"/>
在Grid.Trigger里添加触发它的事件。

<EventTriggerSourceName="btnPause"RoutedEvent="Button.Click">
<EventTrigger.Actions>
<PauseStoryboardBeginStoryboardName="sb"/>
</EventTrigger.Actions>
</EventTrigger>
<EventTriggerSourceName="btnResume"RoutedEvent="Button.Click">
<EventTrigger.Actions>
<ResumeStoryboardBeginStoryboardName="sb"/>
</EventTrigger.Actions>
</EventTrigger>
给MediaElement一个MediaOpened事件叫mediaElement1_MediaOpened
和在MediaTimeline里加个事件CurrentTimeInvalidated=
"MediaTimeline_CurrentTimeInvalidated"
后台代码是:

privatevoidmediaElement1_MediaOpened(objectsender,RoutedEventArgse)
{
timeSlider.Maximum=mediaElement1.NaturalDuration.TimeSpan.TotalMilliseconds;
}

privatevoidMediaTimeline_CurrentTimeInvalidated(objectsender,EventArgse)
{
timeSlider.Value=mediaElement1.Position.TotalMilliseconds;
}
这里timeSlider的最大时间点也就是结束点是mediaElement1总的秒数。

timeSlider随着mediaElement1的播放而移动。

效果:


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: