首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >媒体元素上的淡出播放/暂停图标- uwp

媒体元素上的淡出播放/暂停图标- uwp
EN

Stack Overflow用户
提问于 2017-11-30 18:00:56
回答 2查看 392关注 0票数 0

当视频处于暂停/播放模式时,我想在视频上显示播放/暂停图标。这些图标应该会在几秒钟后消失。什么是应用淡出/淡入动画的最好方法?

代码语言:javascript
复制
  <MediaElement Name="videoMediaElement" AreTransportControlsEnabled="True" Stretch="Fill" PointerPressed="videoMediaElement_PointerPressed"   MediaOpened="videoMediaElement_MediaOpened" CurrentStateChanged="Media_State_Changed" >
        <MediaElement.TransportControls>
            <MediaTransportControls Background="Red" Foreground="White" IsStopButtonVisible="True" IsStopEnabled="True" IsTextScaleFactorEnabled="True" IsPlaybackRateEnabled="True" IsPlaybackRateButtonVisible="True" IsFastForwardButtonVisible="True" IsFastForwardEnabled="True" IsFastRewindButtonVisible="True" IsFastRewindEnabled="True" />
        </MediaElement.TransportControls>
  </MediaElement>
  <Image x:Name="icon_play"  Source="Assets/icon_play.png" Visibility="Collapsed" Opacity="0.5" HorizontalAlignment="Center"  Height="100px" Width="100"/>
  <Image x:Name="icon_pause" Source="Assets/icon_pause.png" Visibility="Collapsed" Opacity="0.5" HorizontalAlignment="Center"  Height="100px" Width="100"/>

  private void Media_State_Changed(object sender, RoutedEventArgs args)
    {
        if (videoMediaElement.CurrentState == MediaElementState.Paused)
        {
            icon_play.Visibility = Visibility.Visible;
            icon_pause.Visibility = Visibility.Collapsed;
        }
        else if (videoMediaElement.CurrentState == MediaElementState.Playing)
        {
            icon_pause.Visibility = Visibility.Visible;
            icon_play.Visibility = Visibility.Collapsed;
        }
    }
EN

Stack Overflow用户

发布于 2017-11-30 18:16:01

创建XAML动画,如:

代码语言:javascript
复制
    <Storyboard x:Name="FadeOut" Target="icon_play" TargetProperty="Opacity">
        <DoubleAnimation To="0" Duration="0:0:0.3"/>
    </Storyboard>

只需调用FadeOut.Begin();

或者创建(我更喜欢)合成动画:

代码语言:javascript
复制
        var compositor = ElementCompositionPreview.GetElementVisual(this).Compositor;

        var implicitOpacity = compositor.CreateScalarKeyFrameAnimation();
        implicitOpacity.Target = "Opacity";
        implicitOpacity.InsertExpressionKeyFrame(1, "This.FinalValue");
        implicitOpacity.Duration = TimeSpan.FromMilliseconds(300);

        var implicitCollection = compositor.CreateImplicitAnimationCollection();
        implicitCollection["Opacity"] = implicitOpacity;

        var playVisual = ElementCompositionPreview.GetElementVisual(play_icon);
        playVisual.ImplicitAnimations = implicitCollection;

现在,每次你改变视觉的不透明度的值-它将是动画的:playVisual.Opacity = 0;

票数 0
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47570618

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档