首页 > 其他分享 >记 一个 WPF 的 加载动画。

记 一个 WPF 的 加载动画。

时间:2023-07-31 09:55:25浏览次数:36  
标签:动画 控件 Arc WPF Border 加载

最近写界面的过程中需要弄个加载动画,但是又没找到想要的轮子,就差不多胡乱弄了一个,用到了HandyControl的Arc控件,别的也没啥了。RatioConverter是自己随便写的一个转换器,算一下Border的中心点的位置。

通过旋转最外层的Border和中间的Arc控件实现整个加载动画。

这个是效果图:

 

最后直接上代码:

        <Border Grid.Column="0" Margin="-5" >
            <hc:Arc Name="arc" Width="30" Height="30" StartAngle="180" EndAngle="180" Stretch="None" ArcThickness="2" Fill="{StaticResource SystemRunningColorBrush}" />
            <Border.RenderTransform>
                <TransformGroup>
                    <RotateTransform Angle="0" CenterX="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=Border}, Path=ActualWidth,Converter={StaticResource RatioConverter}, ConverterParameter=0.5}" CenterY="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=Border}, Path=ActualHeight,Converter={StaticResource RatioConverter}, ConverterParameter=0.5}" />
                </TransformGroup>
            </Border.RenderTransform>
            <Border.Triggers>
                <EventTrigger RoutedEvent="Loaded">
                    <BeginStoryboard>
                        <Storyboard>
                            <DoubleAnimation FillBehavior="HoldEnd" Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[0].(RotateTransform.Angle)" From="0" To="360" Duration="0:0:2.3" RepeatBehavior="Forever" />

                            <Storyboard RepeatBehavior="Forever" Storyboard.TargetName="arc" FillBehavior="HoldEnd">
                                <DoubleAnimation Storyboard.TargetProperty="EndAngle" To="540" BeginTime="0:0:0" Duration="0:0:3" FillBehavior="HoldEnd">
                                    <DoubleAnimation.EasingFunction>
                                        <PowerEase EasingMode="EaseInOut" Power="3"/>
                                    </DoubleAnimation.EasingFunction>
                                </DoubleAnimation>
                                <DoubleAnimation Storyboard.TargetProperty="EndAngle" To="180" BeginTime="0:0:2.8" Duration="0:0:2.3" FillBehavior="HoldEnd" />
                            </Storyboard>
                        </Storyboard>
                    </BeginStoryboard>
                </EventTrigger>
            </Border.Triggers>
        </Border>

标签:动画,控件,Arc,WPF,Border,加载
From: https://www.cnblogs.com/Novembers/p/17592665.html

相关文章

  • requestAnimationFrame优化动画
    requestAnimationFrame优化动画总结:requestAnimationFrame与setInterval的区别setInterval是在任务队列里执行的,也就是说上一帧没有执行完下一帧不可能执行。而requestAnimationFrame是在差异队列里执行的,也就是说没有延迟。requestAnimationFrame可以准时执行每一帧<!......
  • 16、博客列表加载效果 - 博客界面改造文章(202307)
    最近闲来无事,就想着把博客界面弄得再有点动画效果,于是就找了延迟函数,把博客的内容列表加载的动画写出来了。      该动画效果还是挺炫的,但是因为刷新页面,下面列表的显示需要拉动到底下才看到,所以这里只能记录一下了。      下面是实现的函数:       ......
  • css 动画无限滚动
    创建一个外层容器(loop-wrap)和一个包含CSS标签的容器(loop)。CSS标签使用tag类样式化,并带有文本"#CSS"。使用@keyframesloop动画规则来实现标签的水平滚动效果。动画从初始位置滚动到左边50%的位置,并持续3秒后无限循环。通过将fade类应用于一个空白的div,在loop-wrap容器上创建了一个......
  • HuggingFace | HuggingFace中from_pretrained函数的加载
    我们使用huggingface的from_pretrained()函数加载模型和tokenizer,那么加载这些需要什么文件?加载模型测试代码:如果加载成功,就打印1。fromtransformersimportAutoModelForMaskedLMmodel=AutoModelForMaskedLM.from_pretrained("./bert-base-chinese")print(1)文件目......
  • 进程掏空代码注入实现和使用威胁图的检测思路——本质上掏空就是在操作PE的加载,NtUnma
     在进程掏空代码注入技术中,攻击者创建一个处于挂起状态的新进程,然后从内存中取消映射其映像,改为写入恶意二进制文件,最后恢复程序状态以执行注入的代码。 注入步骤:步骤1:创建一个处于挂起状态的新进程:设置了CREATE_SUSPENDED标志的CreateProcessA()步骤2:交换其内存内容(取......
  • PysparkNote006---pycharm加载spark环境
    pycharm配置pyspark环境,本地执行pyspark代码spark安装、添加环境变量不提了File-Settings-Project-ProjectStructure-addcontentroot添加如下两个路径D:\code\spark\python\lib\py4j-0.10.7-src.zipD:\code\spark\python\lib\pyspark.zip                ......
  • SAP Fiori Elements 应用加载时的 url 参数 sap-ui-xx-viewCache=false
    SAPFioriElements是SAP提供的一种UI技术,其主要目的是提供一种快速、简单、一致且易于维护的方式来开发SAP用户界面。而sap-ui-xx-viewCache=false是一个URL参数,用于控制FioriElements应用的视图缓存。在SAPFioriElements中,视图缓存是一个可以提高应用性能的......
  • el-select 无限下拉滚动加载数据
     <template> <div>  <el-form   ref="saveParameter"   :model="saveParameter"   inline   inline-message   style="margin:10px"  >   <el-form-itemlabel="供应商"prop=&......
  • 前端性能优化策略:加速网页加载时间的关键技巧
    引言:在当今互联网时代,网页加载速度是提供出色用户体验的关键因素之一。快速加载的网页不仅可以吸引更多用户,还可以提高转化率和搜索引擎排名。因此,前端性能优化成为每个开发人员和网站所有者都应该关注的重要议题。本文将介绍一些关键的前端性能优化策略,帮助您加速网页加载时间并......
  • 逐帧动画
    .a{    width:500px;    height:500px;    /*动画的名字持续时间状态backwardsinfinitealternate*/    animation:change1sbackwardsalternateinfinite;    }   @keyframeschange{    from{  ......