WPF炫酷科技感的加载动画

WPF炫酷科技感的加载动画

请添加图片描述
使用多个圆形和圆环叠加实现,最后给整个控件添加SkewTransform 变形实现。
圆环使用Microsoft.Expression.Drawing.dll库中的Arc绘制。
可以在Nuget中搜索“Microsoft.Expression.Drawing.dll”获得该dll。

<UserControl x:Class="TDS.Controls.UserControl9"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
             xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
             xmlns:ed="clr-namespace:Microsoft.Expression.Shapes;assembly=Microsoft.Expression.Drawing"
             xmlns:local="clr-namespace:TDS.Controls"
             mc:Ignorable="d" 
             d:DesignHeight="300" d:DesignWidth="300">
    <UserControl.Effect>
        <DropShadowEffect Color="#FF6DFFFF" Direction="-45" ShadowDepth="2" BlurRadius="8"/>
    </UserControl.Effect>
    <UserControl.Triggers>
        <EventTrigger RoutedEvent="Loaded">
            <BeginStoryboard>
                <Storyboard RepeatBehavior="Forever">
                    <DoubleAnimation From="0" To="360" Storyboard.TargetProperty="RenderTransform.Children[0].Angle" Storyboard.TargetName="ellispe1"/>
                    <DoubleAnimation From="0" To="360" Storyboard.TargetProperty="RenderTransform.Children[0].Angle" Storyboard.TargetName="arc1"/>
                </Storyboard>
            </BeginStoryboard>
        </EventTrigger>
    </UserControl.Triggers>
    <Grid>
        <Grid.RenderTransform>
            <TransformGroup>
                <SkewTransform AngleX="-45"/>
            </TransformGroup>
        </Grid.RenderTransform>
        <Ellipse Stroke="{StaticResource AccentBrush}" StrokeThickness="1" RenderTransformOrigin="0.5,0.5">
        </Ellipse>

        <Ellipse Stroke="{StaticResource AccentBrush}" Margin="16" StrokeThickness="1" RenderTransformOrigin="0.5,0.5">
        </Ellipse>

        <Ellipse Stroke="{StaticResource AccentBrushDark}" Margin="28" RenderTransformOrigin="0.5,0.5">
        </Ellipse>

        <Ellipse x:Name="ellispe1" StrokeDashArray="0.2,1" Margin="6" StrokeThickness="6" RenderTransformOrigin="0.5,0.5">
            <Ellipse.Stroke>
                <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
                    <GradientStop Color="#CE3AFAEE"/>
                    <GradientStop Color="#6B25C185" Offset="0.2"/>
                    <GradientStop Color="Transparent" Offset="1"/>
                </LinearGradientBrush>
            </Ellipse.Stroke>
            <Ellipse.RenderTransform>
                <TransformGroup>
                    <RotateTransform Angle="45"/>
                </TransformGroup>
            </Ellipse.RenderTransform>
        </Ellipse>

        <ed:Arc x:Name="arc1" StartAngle="0" EndAngle="135" ArcThickness="5" Margin="16" Stretch="None" RenderTransformOrigin="0.5,0.5">
            <ed:Arc.Fill>
                <LinearGradientBrush StartPoint="0,0.5" EndPoint="1,0.5">
                    <GradientStop Color="Transparent" Offset="0"/>
                    <GradientStop Color="#F1EEEEEE" Offset="1"/>
                </LinearGradientBrush>
            </ed:Arc.Fill>
            <ed:Arc.RenderTransform>
                <TransformGroup>
                    <RotateTransform Angle="45"/>
                    <TranslateTransform X="-32" Y="-22"/>
                </TransformGroup>
            </ed:Arc.RenderTransform>
        </ed:Arc>

        <Ellipse Stroke="{StaticResource AccentBrush}" Margin="18" StrokeThickness="1" RenderTransformOrigin="0.5,0.5">
            <Ellipse.RenderTransform>
                <TransformGroup>
                    <TranslateTransform X="-32" Y="-22"/>
                </TransformGroup>
            </Ellipse.RenderTransform>
        </Ellipse>
    </Grid>
</UserControl>

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不知名君

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值