zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    初涉echarts图表笔记。
    es6----数组去重(简单类型和引用类型)
    git pull 拉取更新失败解决方案
    javascript----是否下拉到页面底部
    构造函数和析构函数
    派生类和基类
    C++11新标准
    类型转换
    编码
    牛牛的背包问题
  • 原文地址:https://www.cnblogs.com/dingli/p/1942823.html
Copyright © 2011-2022 走看看