加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Windows > 正文

windows – 更改背景图像时的动画(C#winrt)

发布时间:2020-12-14 05:25:00 所属栏目:Windows 来源:网络整理
导读:我正在使用 Windows 8音乐应用程序.我正在用当前歌曲/专辑的图像改变页面的背景.我想在更改图像时添加fadeIn / dafeOut动画,但无法弄清楚我该怎么做. Grid x:Name="LayoutRoot" Background="{StaticResource ApplicationPageBackgroundThemeBrush}" Grid.Res
我正在使用 Windows 8音乐应用程序.我正在用当前歌曲/专辑的图像改变页面的背景.我想在更改图像时添加fadeIn / dafeOut动画,但无法弄清楚我该怎么做.

<Grid  x:Name="LayoutRoot" Background="{StaticResource  ApplicationPageBackgroundThemeBrush}">
        <Grid.Resources>
            <Storyboard x:Name="fadeOutStoryBoard">
                <DoubleAnimation
                    Storyboard.TargetName="LayoutRoot"
                    Storyboard.TargetProperty="(LayoutRoot.Background).(ImageBrush.Opacity)"
                    From="1.0" To="0.0" Duration="0:0:10"/>
            </Storyboard>
            <Storyboard x:Name="fadeInStoryBoard">
                <DoubleAnimation
                    Storyboard.TargetName="LayoutRoot"
                    Storyboard.TargetProperty="(LayoutRoot.Background).(ImageBrush.Opacity)"
                    From="0" To="1.0" Duration="0:0:10"/>
            </Storyboard>
        </Grid.Resources>
    </Grid>

    In C# code: 
    ImageBrush image = new ImageBrush();
    image.ImageSource = new BitmapImage(imageUri);
    fadeOutStoryBoard.Begin();
    MainPage.Current.LayoutRoot.Background = image;
    fadeInStoryBoard.Begin();

图像变化很好,但我看不到动画.我尝试将TargetProperty更改为(LayoutRoot.Background).Opacity或(LayoutRoot.Background).(SolidColorBrush.Opacity)但没有运气.如果我将TargetProperty设置为“Opacity”,则动画可以工作,但适用于整个页面而不仅仅是背景.

解决方法

不要将图像作为页面的背景,添加另一个将保留背景的网格/边框.在动画中使用不透明度作为TargetProperty.

原因是当前动画正在处理旧图像画笔而不是您创建的新图像画笔.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读