WPF 多媒体MediaElement 的使用(二)

        本章讲述:使用media player MediaTimeline 和Storyboard 来控制视频播放

        当使用中的 MediaTimeline Storyboard 来控制的时间时 MediaElement ,该功能与其他对象(如动画)的功能相同 Timeline 。它还使用 Duration 属性来指定 MediaElement 活动 (持续时间) 媒体播放的时间。

        下面一个小示例:如何创建使用的简单 media player MediaTimeline 来控制播放。 Media player 包括播放、暂停、恢复和停止按钮,有一个 Slider 充当进度栏的控件。

界面设计

<StackPanel Background="Black">
    <MediaElement x:Name="myMediaElement" Height="450" Width="450" Stretch="Fill" MediaOpened="myMediaElement_MediaOpened">
        <MediaElement.LayoutTransform>
            <TransformGroup>
                <RotateTransform Angle="180"/>
            </TransformGroup>
        </MediaElement.LayoutTransform>
    </MediaElement>
    <Slider x:Name="timelineSlider" Margin="5"  HorizontalAlignment="Stretch"/>
    <StackPanel Orientation="Horizontal" HorizontalAlignment="Center">
        <Button Width="80" Height="25" x:Name="PlayBtn" Margin="10" Content="播放"/>
        <Button Width="80" Height="25" x:Name="PauseBtn" Margin="10" Content="暂停"/>
        <Button Width="80" Height="25" x:Name="ResumeBtn" Margin="10" Content="恢复"/>
        <Button Width="80" Height="25" x:Name="StopBtn" Margin="10" Content="停止"/>
    </StackPanel>	
    <StackPanel.Triggers>
        <EventTrigger RoutedEvent="Button.Click" SourceName="PlayBtn">
            <EventTrigger.Actions>
                <BeginStoryboard x:Name="myBegin">
                    <Storyboard SlipBehavior="Slip">
                        <MediaTimeline Source="E:\Video\视频202101.mp4" Storyboard.TargetName="myMediaElement" CurrentTimeInvalidated="MediaTimeline_CurrentTimeInvalidated"/>
                    </Storyboard>
                </BeginStoryboard>
            </EventTrigger.Actions>
        </EventTrigger>
        <EventTrigger RoutedEvent="Button.Click" SourceName="PauseBtn">
            <EventTrigger.Actions>
                <PauseStoryboard BeginStoryboardName="myBegin"/>
             </EventTrigger.Actions>
        </EventTrigger>
        <EventTrigger RoutedEvent="Button.Click" SourceName="ResumeBtn">
            <EventTrigger.Actions>
                <ResumeStoryboard BeginStoryboardName="myBegin"/>
            </EventTrigger.Actions>
        </EventTrigger>
        <EventTrigger RoutedEvent="Button.Click" SourceName="StopBtn">
            <EventTrigger.Actions>
                <StopStoryboard BeginStoryboardName="myBegin"/>
            </EventTrigger.Actions>
        </EventTrigger>		
    </StackPanel.Triggers>	
</StackPanel>

使用 Duration 属性来指定 MediaElement 活动 (持续时间) 媒体播放的时间,这里视频从0秒开始,播放23秒

<MediaTimeline Source="........." Storyboard.TargetName="myMediaElement"  BeginTime="0:0:0" Duration="0:0:23" CurrentTimeInvalidated="MediaTimeChanged" />

进度条进度值更新和最值设置

private void myMediaElement_MediaOpened(object sender, RoutedEventArgs e)
{
    timelineSlider.Maximum = myMediaElement.NaturalDuration.TimeSpan.TotalMilliseconds;
}
private void MediaTimeline_CurrentTimeInvalidated(object sender, EventArgs e)
{
    timelineSlider.Value = myMediaElement.Position.TotalMilliseconds;
}

运行效果图

**************************************************************************************************************

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值