• wpf动画同步闪烁


     1    public class BlinkAnimation : Animatable
     2     {
     3         /// <summary>
     4         /// 单例,保持所有闪烁的动画同步
     5         /// </summary>
     6         public static readonly BlinkAnimation Instance = new BlinkAnimation();
     7 
     8         public double BlinkOpacity
     9         {
    10             get { return (double)GetValue(BlinkOpacityProperty); }
    11             set { SetValue(BlinkOpacityProperty, value); }
    12         }
    13 
    14         // Using a DependencyProperty as the backing store for BlinkOpacity.  This enables animation, styling, binding, etc...
    15         public static readonly DependencyProperty BlinkOpacityProperty =
    16             DependencyProperty.Register("BlinkOpacity", typeof(double), typeof(BlinkAnimation), new PropertyMetadata(0.0));
    17 
    18 
    19 
    20         /// <summary>
    21         /// 闪烁动画,用于动画同步
    22         /// </summary>
    23         public BlinkAnimation()
    24         {
    25             try
    26             {
    27                 DoubleAnimationUsingKeyFrames doubleAnimation = new DoubleAnimationUsingKeyFrames
    28                 {
    29                     RepeatBehavior = RepeatBehavior.Forever,
    30                     Duration = TimeSpan.FromSeconds(1.5)
    31                 };
    32 
    33                 DiscreteDoubleKeyFrame ddkf1 = new DiscreteDoubleKeyFrame(0.0, KeyTime.FromTimeSpan(TimeSpan.FromSeconds(0)));
    34                 DiscreteDoubleKeyFrame ddkf2 = new DiscreteDoubleKeyFrame(1.0, KeyTime.FromTimeSpan(TimeSpan.FromSeconds(0.75)));
    35 
    36                 doubleAnimation.KeyFrames.Add(ddkf1);
    37                 doubleAnimation.KeyFrames.Add(ddkf2);
    38 
    39                 if (BlinkOpacityProperty!=null)
    40                 {
    41                      BeginAnimation(BlinkOpacityProperty, doubleAnimation);
    42                 } 
    43             }
    44             catch (Exception)
    45             {
    46                 // ignored
    47             }
    48         }
    49 
    50         protected override Freezable CreateInstanceCore()
    51         {
    52             return Instance;
    53         }
    54     }

    使用方法:

    1   <!--闪烁动画同步控制类-->
    2             <ObjectDataProvider x:Key="BlinkerOdp"
    3                                 ObjectType="{x:Type animation:BlinkAnimation}" />
    1   <Rectangle Fill="White"
    2                                                                DataContext="{StaticResource BlinkerOdp}"
    3                                                                Opacity="{Binding BlinkOpacity}"
    4                                                                x:Name="rect"
    5                                                                Visibility="Collapsed" />

    感谢阅读

  • 相关阅读:
    sql知识
    铁道部新客票系统设计(三)
    PYTHON压平嵌套列表
    快速升级App支持iOS6及iPhone5的4寸屏幕
    TreeListView
    杭州ADC技术嘉年华两日总结SOA,去C
    .NET(C#): Task.Unwrap扩展方法和async Lambda
    关于分布式系统的数据一致性问题
    wcf 随笔1
    Linux进程基础
  • 原文地址:https://www.cnblogs.com/congqiandehoulai/p/8352043.html
Copyright © 2020-2023  润新知