[WPF] 圆形等待效果

来源:互联网 发布:画装修图软件 编辑:程序博客网 时间:2024/04/28 12:24

自己做着玩儿的,留着以后用,效果类似下面的 GIF 动画。

等待效果

<Grid Width="35" Height="35">    <Grid.Resources>        <DrawingBrush x:Key="brush" Stretch="None" AlignmentX="Center" AlignmentY="Top">            <DrawingBrush.Drawing>                <GeometryDrawing Brush="Black">                    <GeometryDrawing.Geometry>                        <EllipseGeometry RadiusX="2" RadiusY="5"/>                    </GeometryDrawing.Geometry>                </GeometryDrawing>            </DrawingBrush.Drawing>        </DrawingBrush>    </Grid.Resources>    <Rectangle x:Name="r01" Fill="{StaticResource brush}" Opacity="0.2" RenderTransformOrigin="0.5,0.5">        <Rectangle.RenderTransform>            <RotateTransform Angle="0"/>        </Rectangle.RenderTransform>    </Rectangle>    <Rectangle x:Name="r02" Fill="{StaticResource brush}" Opacity="0.2" RenderTransformOrigin="0.5,0.5">        <Rectangle.RenderTransform>            <RotateTransform Angle="30"/>        </Rectangle.RenderTransform>    </Rectangle>    <Rectangle x:Name="r03" Fill="{StaticResource brush}" Opacity="0.2" RenderTransformOrigin="0.5,0.5">        <Rectangle.RenderTransform>            <RotateTransform Angle="60"/>        </Rectangle.RenderTransform>    </Rectangle>    <Rectangle x:Name="r04" Fill="{StaticResource brush}" Opacity="0.2" RenderTransformOrigin="0.5,0.5">        <Rectangle.RenderTransform>            <RotateTransform Angle="90"/>        </Rectangle.RenderTransform>    </Rectangle>    <Rectangle x:Name="r05" Fill="{StaticResource brush}" Opacity="0.2" RenderTransformOrigin="0.5,0.5">        <Rectangle.RenderTransform>            <RotateTransform Angle="120"/>        </Rectangle.RenderTransform>    </Rectangle>    <Rectangle x:Name="r06" Fill="{StaticResource brush}" Opacity="0.2" RenderTransformOrigin="0.5,0.5">        <Rectangle.RenderTransform>            <RotateTransform Angle="150"/>        </Rectangle.RenderTransform>    </Rectangle>    <Rectangle x:Name="r07" Fill="{StaticResource brush}" Opacity="0.2" RenderTransformOrigin="0.5,0.5">        <Rectangle.RenderTransform>            <RotateTransform Angle="180"/>        </Rectangle.RenderTransform>    </Rectangle>    <Rectangle x:Name="r08" Fill="{StaticResource brush}" Opacity="0.2" RenderTransformOrigin="0.5,0.5">        <Rectangle.RenderTransform>            <RotateTransform Angle="210"/>        </Rectangle.RenderTransform>    </Rectangle>    <Rectangle x:Name="r09" Fill="{StaticResource brush}" Opacity="0.2" RenderTransformOrigin="0.5,0.5">        <Rectangle.RenderTransform>            <RotateTransform Angle="240"/>        </Rectangle.RenderTransform>    </Rectangle>    <Rectangle x:Name="r10" Fill="{StaticResource brush}" Opacity="0.2" RenderTransformOrigin="0.5,0.5">        <Rectangle.RenderTransform>            <RotateTransform Angle="270"/>        </Rectangle.RenderTransform>    </Rectangle>    <Rectangle x:Name="r11" Fill="{StaticResource brush}" Opacity="0.2" RenderTransformOrigin="0.5,0.5">        <Rectangle.RenderTransform>            <RotateTransform Angle="300"/>        </Rectangle.RenderTransform>    </Rectangle>    <Rectangle x:Name="r12" Fill="{StaticResource brush}" Opacity="0.2" RenderTransformOrigin="0.5,0.5">        <Rectangle.RenderTransform>            <RotateTransform Angle="330"/>        </Rectangle.RenderTransform>    </Rectangle>                    <Grid.Triggers>        <EventTrigger RoutedEvent="Grid.Loaded">            <BeginStoryboard>                <Storyboard RepeatBehavior="Forever">                    <DoubleAnimation Storyboard.TargetName="r01" Storyboard.TargetProperty="Opacity" AutoReverse="True" Duration="0:0:0.08333" BeginTime="0:0:0.00000" To="0"/>                    <DoubleAnimation Storyboard.TargetName="r02" Storyboard.TargetProperty="Opacity" AutoReverse="True" Duration="0:0:0.08333" BeginTime="0:0:0.08333" To="0"/>                    <DoubleAnimation Storyboard.TargetName="r03" Storyboard.TargetProperty="Opacity" AutoReverse="True" Duration="0:0:0.08333" BeginTime="0:0:0.16666" To="0"/>                    <DoubleAnimation Storyboard.TargetName="r04" Storyboard.TargetProperty="Opacity" AutoReverse="True" Duration="0:0:0.08333" BeginTime="0:0:0.24999" To="0"/>                    <DoubleAnimation Storyboard.TargetName="r05" Storyboard.TargetProperty="Opacity" AutoReverse="True" Duration="0:0:0.08333" BeginTime="0:0:0.33332" To="0"/>                    <DoubleAnimation Storyboard.TargetName="r06" Storyboard.TargetProperty="Opacity" AutoReverse="True" Duration="0:0:0.08333" BeginTime="0:0:0.41665" To="0"/>                    <DoubleAnimation Storyboard.TargetName="r07" Storyboard.TargetProperty="Opacity" AutoReverse="True" Duration="0:0:0.08333" BeginTime="0:0:0.49998" To="0"/>                    <DoubleAnimation Storyboard.TargetName="r08" Storyboard.TargetProperty="Opacity" AutoReverse="True" Duration="0:0:0.08333" BeginTime="0:0:0.58331" To="0"/>                    <DoubleAnimation Storyboard.TargetName="r09" Storyboard.TargetProperty="Opacity" AutoReverse="True" Duration="0:0:0.08333" BeginTime="0:0:0.66664" To="0"/>                    <DoubleAnimation Storyboard.TargetName="r10" Storyboard.TargetProperty="Opacity" AutoReverse="True" Duration="0:0:0.08333" BeginTime="0:0:0.74997" To="0"/>                    <DoubleAnimation Storyboard.TargetName="r11" Storyboard.TargetProperty="Opacity" AutoReverse="True" Duration="0:0:0.08333" BeginTime="0:0:0.83330" To="0"/>                    <DoubleAnimation Storyboard.TargetName="r12" Storyboard.TargetProperty="Opacity" AutoReverse="True" Duration="0:0:0.08333" BeginTime="0:0:0.91663" To="0"/>                </Storyboard>            </BeginStoryboard>        </EventTrigger>    </Grid.Triggers></Grid>