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运行。

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

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

拖入两个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的播放而移动。

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

相关文章:

  • 2021-11-29
  • 2022-01-26
  • 2021-10-01
  • 2021-10-31
  • 2022-01-21
  • 2021-11-06
  • 2021-06-03
  • 2021-09-10
猜你喜欢
  • 2022-02-24
  • 2021-09-15
  • 2021-06-17
  • 2021-05-27
  • 2021-09-08
  • 2022-02-17
  • 2021-12-28
相关资源
相似解决方案