• WPF动画小知识


    一、动画合集

    创建一个Storyboard演示画板,在画板里对动画进行定义与处理。

    常见动画类型

    提醒:更多介绍可查看microsoft提供的相关文档

    DoubleAnimation                               //普通Double型控制动画

    DoubleAnimationUsingKeyFrames //Double型关键帧动画

    ObjectAnimationUsingKeyFrames  //Object型关键帧动画

    ColorAnimationUsingKeyFrames    //Color型关键帧动画

    StringAnimationUsingKeyFrames    //String型关键帧动画

    MatrixAnimationUsingPath              //沿路径型动画

    1、资源里添加动画资源

    注意:开始动画得自己规划逻辑(触发器、事件都可)

    1. var storybd = this.FindResource("storybd") as Storyboard;
    2. storybd.Begin();
    1. <Window.Resources>
    2. <Storyboard x:Key="storybd">
    3. <DoubleAnimation AutoReverse="True"
    4. By="0.1"
    5. RepeatBehavior="Forever"
    6. Storyboard.TargetName="btn"
    7. Storyboard.TargetProperty="Opacity"
    8. From="0.0" />
    9. <DoubleAnimation AutoReverse="True"
    10. RepeatBehavior="Forever"
    11. Storyboard.TargetName="btn"
    12. Storyboard.TargetProperty="(Control.Background).(RadialGradientBrush.GradientStops)[1].Offset"
    13. From="1"
    14. To="0"
    15. Duration="0:0:1" />
    16. Storyboard>
    17. Window.Resources>

    2、事件触发器里开始一个动画

    1. <Rectangle Name="Rect"
    2. Width="70"
    3. Height="80"
    4. Margin="279,0,0,0"
    5. HorizontalAlignment="Left"
    6. VerticalAlignment="Center"
    7. Fill="Green">
    8. <Rectangle.Triggers>
    9. <EventTrigger RoutedEvent="Rectangle.Loaded">
    10. <BeginStoryboard>
    11. <Storyboard>
    12. <DoubleAnimation AutoReverse="True"
    13. RepeatBehavior="Forever"
    14. Storyboard.TargetName="Rect"
    15. Storyboard.TargetProperty="Opacity"
    16. From="1"
    17. To="0"
    18. Duration="0:0:1" />
    19. Storyboard>
    20. BeginStoryboard>
    21. EventTrigger>
    22. Rectangle.Triggers>
    23. Rectangle>

    3、Double型关键帧动画

    1. <DoubleAnimationUsingKeyFrames AutoReverse="True"
    2. RepeatBehavior="Forever"
    3. Storyboard.TargetName="Rect"
    4. Storyboard.TargetProperty="(FrameworkElement.Width)">
    5. <EasingDoubleKeyFrame KeyTime="0:0:0" Value="0" />
    6. <EasingDoubleKeyFrame KeyTime="0:0:5" Value="70" />
    7. DoubleAnimationUsingKeyFrames>
    8. <DoubleAnimationUsingKeyFrames AutoReverse="True"
    9. RepeatBehavior="Forever"
    10. Storyboard.TargetName="Rect"
    11. Storyboard.TargetProperty="(FrameworkElement.Height)">
    12. <EasingDoubleKeyFrame KeyTime="0:0:0" Value="0" />
    13. <EasingDoubleKeyFrame KeyTime="0:0:5" Value="80" />
    14. DoubleAnimationUsingKeyFrames>

    4、Object型关键帧动画 

    1. <Window.Resources>
    2. <Storyboard x:Key="story">
    3. <ObjectAnimationUsingKeyFrames Storyboard.TargetName="img" AutoReverse="True" RepeatBehavior="Forever" Storyboard.TargetProperty="(UIElement.Visibility)">
    4. <DiscreteObjectKeyFrame KeyTime="0:0:0.03" Value="{x:Static Visibility.Hidden}"/>
    5. <DiscreteObjectKeyFrame KeyTime="0:0:0.06" Value="{x:Static Visibility.Visible}"/>
    6. ObjectAnimationUsingKeyFrames>
    7. Storyboard>
    8. Window.Resources>

    5、Color型关键帧动画

    1. <Storyboard x:Key="story">
    2. <ColorAnimationUsingKeyFrames AutoReverse="True"
    3. RepeatBehavior="Forever"
    4. Storyboard.TargetName="btn"
    5. Storyboard.TargetProperty="(Button.Background).(SolidColorBrush.Color)">
    6. <EasingColorKeyFrame KeyTime="0" Value="Red" />
    7. <EasingColorKeyFrame KeyTime="0:0:0.5" Value="Blue" />
    8. <DiscreteColorKeyFrame KeyTime="0:0:1" Value="Red" />
    9. <DiscreteColorKeyFrame KeyTime="0:0:1.5" Value="Yellow" />
    10. ColorAnimationUsingKeyFrames>
    11. Storyboard>

    6、String型关键帧动画

    FillBehavior,动画结束时行为

                            HoldEnd:保持在动画结束的最后一帧画面

                            Stop:动画结束,恢复动画开始前的画面

    1. <StringAnimationUsingKeyFrames FillBehavior="HoldEnd"
    2. Storyboard.TargetName="btn"
    3. Storyboard.TargetProperty="(Button.Content)">
    4. <DiscreteStringKeyFrame KeyTime="0" Value="5s" />
    5. <DiscreteStringKeyFrame KeyTime="0:0:1" Value="4s" />
    6. <DiscreteStringKeyFrame KeyTime="0:0:2" Value="3s" />
    7. <DiscreteStringKeyFrame KeyTime="0:0:3" Value="2s" />
    8. <DiscreteStringKeyFrame KeyTime="0:0:4" Value="1s" />
    9. <DiscreteStringKeyFrame KeyTime="0:0:5" Value="0s" />
    10. StringAnimationUsingKeyFrames>

    7、Matrix型沿路径动画

    使用如下:

    移动控件可用RenderTransformOrigin="0.5,0.5",切换位置转换的中心点

    DoesRotateWithTangent:按切换方向旋转;

    PathGeometry:指定路径;

    1. <Rectangle.RenderTransform>
    2. <MatrixTransform />
    3. Rectangle.RenderTransform>
    4. <MatrixAnimationUsingPath AutoReverse="True"
    5. DoesRotateWithTangent="True"
    6. PathGeometry="{StaticResource Path2}"
    7. RepeatBehavior="Forever"
    8. Storyboard.TargetName="Rect"
    9. Storyboard.TargetProperty="RenderTransform.Matrix"
    10. Duration="0:0:3" />

    二、扩展

    1、流动Path

     StrokeDashArray :分段长度

     StrokeDashOffset:分段偏移值(改变该值实现流动效果)

     StrokeDashArray="5"  StrokeDashOffset="{Binding OffSet}"

    2、变形

    控制变形的属性:RenderTransform:呈现变形(定义在UIElement类中);

                                 LayoutTransform:布局变形(定义在FrameworkElement类中);

     其数据类型都是Transform抽象类

     Transform派生类;

    1、MatrixTransform:矩阵变形

    2、RotateTransform:旋转变形

    3、ScaleTransform:坐标系变形

    4、SkewTransform:拉伸变形

    5、TranslateTransform:偏移变形

    6、TransformGroup:变形组(多个独立变形合成一个变形组)

  • 相关阅读:
    数学建模【神经网络】
    C++基础——继承
    扬帆牧哲—跨境电商行业商标有多重要?
    英语恶补ing
    如何批量将 Excel 的工作表按行进行拆分
    MPI学习笔记(二):矩阵相乘的两种实现方法
    R语言计算代码的运行时间:使用tictoc包计算代码的运行时间长短、将toc的结果赋值值变量、可以获取详细信息(开始时间、结束时间、tic内容等)
    【C语言】算法学习·回溯算法
    工业物联网网关 串口网关 多协议网关
    B-3:Web安全之综合渗透测试
  • 原文地址:https://blog.csdn.net/rwo_bear/article/details/134401145