zoukankan      html  css  js  c++  java
  • WPF与缓动(三) 指数缓动

                                                             WPF与缓动(三) 指数缓动
                                                                                 周银辉

    指数缓动给人的感觉是加速度很大.
    它的原始公式来自:P(t) = Math.Pow(2,   10*(t-1));
    与其他缓动一样,我在这里就直接给出其核心代码了:
     //指数缓动
            protected override double GetCurrentValueCore(double defaultOriginValue, double defaultDestinationValue, AnimationClock animationClock)
            
    {
                
    double from = (this.From==null?defaultDestinationValue:(double)this.From);
                
    double to = (this.To==null?defaultOriginValue:(double)this.To);
                
    double delta = to - from;
                
    double value = animationClock.CurrentProgress.Value;


                
    //加速
                
    //return delta * Math.Pow(2, 10 * (value - 1)) + from;

                
    //减速
                
    //return delta * (-Math.Pow(2, -10 * value) + 1) + from;

                
    //先加速,后减速
                double t = value * this.Duration.TimeSpan.Ticks;
                
    double d = this.Duration.TimeSpan.Ticks;
                
    if ((t/=(d/2)) < 1)
                
    {
                   
    return  delta / 2 * Math.Pow(210 * (t - 1)) + from;
                }

                
    return delta / 2 * (-Math.Pow(2-10 * --t) + 2+ from;
                
            }

    点击这里下载源代码

  • 相关阅读:
    第二周学习总结
    调查问卷
    第五周学习总结
    基于DevExpress的项目窗体统一换肤
    一个Linq to Sql 的关联小问题,搞死人
    VC中类型转换(转载)
    保证一个程序只运行一次
    给所有的Control添加发送键盘事件Tab事件,实现回车键自动跳转到下一个控件[基于Shark Xu]
    遍历进程
    CSS Friendly ASP.NET 2.0 Control Adapters (Beta 2.0)在处理URL时的一个Bug
  • 原文地址:https://www.cnblogs.com/zhouyinhui/p/758897.html
Copyright © 2011-2022 走看看