uwp之图片旋转动画实现

先放效果图。类似网易云音乐播放音乐时封面旋转效果

两种实现方式,分别是前端(xaml)和后台(c#代码)实现,右边的图片旋转是在xaml实现,左边的长方形(其实是个Button控件)旋转是在c#代码里面实现

xaml代码如下

<Grid x:Name="LayoutRoot" Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
        <Grid.Resources>
            
        </Grid.Resources>
        <!--Ellipse是绘制一个椭圆形-->
        <Ellipse x:Name="ellipse" Width="200" Height="200" RenderTransformOrigin="0.5,0.5">
            <Ellipse.RenderTransform>
                <CompositeTransform/>
            </Ellipse.RenderTransform>
            <Ellipse.Resources>
                <!--Storyboard是一个动画容器-->
                <Storyboard x:Name="EllStoryboard" RepeatBehavior="Forever">
                    <DoubleAnimation Duration="0:0:20" To="360" Storyboard.TargetProperty="(UIElement.RenderTransform).(CompositeTransform.Rotation)" Storyboard.TargetName="ellipse" d:IsOptimized="True"/>
                </Storyboard>
            </Ellipse.Resources>
            <!--这是用一张图片来填充这个椭圆形-->
            <Ellipse.Fill>
                <ImageBrush x:Name="picture" ImageSource="Assets\30.jpg" />
            </Ellipse.Fill>
        </Ellipse>

        <Button x:Name="button" Width="50" Height="30" Margin="10">
        </Button>
    </Grid>


当完成了以上的xaml的时候,右边的旋转动画已经做好,只要在.cs文件里面相应的地方让动画开始或者暂停或者结束

//图片旋转动画开始
EllStoryboard.Begin();
//图片旋转动画暂停
EllStoryboard.Pause();
//图片旋转动画结束
EllStoryboard.Stop();


在.cs文件里面用c#代码来实现Button的旋转

private void Rotation()
        {
            
            button.RenderTransformOrigin = new Point(0.5, 0.5);
           
            CompositeTransform c = new CompositeTransform();
            
            button.RenderTransform = c;

            Storyboard storyboard = new Storyboard();
            DoubleAnimation animation = new DoubleAnimation
            {
                From = 0,
                To = 360,
                Duration = new Duration(TimeSpan.FromSeconds(20)),
            };
    
            Storyboard.SetTarget(animation, button);
            Storyboard.SetTargetName(animation, "button");
            Storyboard.SetTargetProperty(animation, "(UIElement.RenderTransform).(CompositeTransform.Rotation)");
            
            storyboard.Children.Add(animation);
            
            
        }


其实C#代码就是用代码把xaml里的属性加进去而已


最后附上微软官方文档对RenderTransform、CompositeTransform、Ellipse、Storyboard的说明
RenderTransform :https://msdn.microsoft.com/zh-cn/library/system.windows.uielement.rendertransform(v=vs.110).aspx
CompositeTransform :https://msdn.microsoft.com/zh-cn/library/system.windows.media.compositetransform(v=vs.95).aspx
Ellipse :https://msdn.microsoft.com/zh-cn/library/system.windows.shapes.ellipse(v=vs.110).aspx
Storyboard: https://msdn.microsoft.com/zh-cn/library/system.windows.media.animation.storyboard(v=vs.110).aspx



  • 4
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
哔哩哔哩UWP的安装包可以在微软商店上找到,它的下载链接是:https://www.microsoft.com/store/productId/9NBLGGH5Q5FV。 你可以通过点击链接进入该页面,然后点击安装即可下载和安装哔哩哔哩UWP应用程序。 另外,如果你在使用哔哩哔哩UWP的过程中遇到了一些常见问题,你可以参考哔哩哔哩UWP官方提供的常见问题页面: https://b.nsapps.***帮助你更好地使用这个应用程序。 如果你需要使用VP9视频扩展来支持更高质量的视频播放,你也可以在微软商店上下载和安装VP9视频扩展,下载链接是:https://www.microsoft.com/store/productId/9N4D0MSMP0PT。 安装VP9视频扩展后,你可以享受更高质量的视频播放体验。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [Win10/Win11下图片扩展安装 HEVC/HEIF/CR2等](https://blog.csdn.net/u013130545/article/details/125976932)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [哔哩哔哩UWP Ver4.3.8_x64](https://download.csdn.net/download/Black_Boa/86506997)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值