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;
                
            }

    点击这里下载源代码

  • 相关阅读:
    有关 PHP 和 MySQL 时区的一点总结
    PHP CLI模式下的多进程应用
    Linux编程之:五个常见PHP数据库问题
    用php定制404错误页面 并发信通知管理员
    配置PHP站点安全综合教程
    新手必看的PHP学习入门的一些基础知识
    彻底杜绝PHP的session cookie错误
    专家预言:PHP将比Java更受开发人员欢迎
    PHP企业级应用之WebService续篇
    清除 数据库 日志 以 Db_Test 为例
  • 原文地址:https://www.cnblogs.com/zhouyinhui/p/758897.html
Copyright © 2011-2022 走看看