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

WPF做一个简单播放器

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

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

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

<MediaElement Name="mediaElement1" Margin="0,0,0,61">

</MediaElement>

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

<Grid.Triggers>

            <EventTrigger SourceName="mediaElement1" 
                          RoutedEvent="MediaElement.Loaded">

                <EventTrigger.Actions>

                    <BeginStoryboard x: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运行。

image

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

拖入两个Button按钮和一个Slider。

<Button Height="23" HorizontalAlignment="Left" Margin="68,0,0,7" 
Name="btnPause" VerticalAlignment="Bottom" Width="75">Pause</Button>

<Button Height="23" Margin="162,0,126,7" Name="btnResume" 
VerticalAlignment="Bottom">Resume</Button>

<Slider Height="21" Margin="43,0,55,37" Name="timeSlider"
 VerticalAlignment="Bottom" />

在Grid.Trigger里添加触发它的事件。
<EventTrigger SourceName="btnPause" RoutedEvent="Button.Click">

      <EventTrigger.Actions>

          <PauseStoryboard BeginStoryboardName="sb" />

      </EventTrigger.Actions>

</EventTrigger>

<EventTrigger SourceName="btnResume" RoutedEvent="Button.Click">

        <EventTrigger.Actions>

           <ResumeStoryboard BeginStoryboardName="sb" />

         </EventTrigger.Actions>

</EventTrigger>

给MediaElement一个MediaOpened事件叫mediaElement1_MediaOpened
和在MediaTimeline里加个事件CurrentTimeInvalidated=
"MediaTimeline_CurrentTimeInvalidated"
后台代码是:
private void mediaElement1_MediaOpened(object sender, RoutedEventArgs e)

{

timeSlider.Maximum=mediaElement1.NaturalDuration.TimeSpan.TotalMilliseconds;

}



private void MediaTimeline_CurrentTimeInvalidated(object sender,EventArgs e)

{

timeSlider.Value = mediaElement1.Position.TotalMilliseconds;

}

这里timeSlider的最大时间点也就是结束点是mediaElement1总的秒数。
 

timeSlider随着mediaElement1的播放而移动。

效果:
image

你可能感兴趣的:(WPF)