zoukankan      html  css  js  c++  java
  • WPF与缓动(四) 弧形缓动

                                                       WPF与缓动(四)  弧形缓动
                                                                            周银辉

    弧形缓动就是其缓动曲线为一段圆弧, 如何我们假设圆弧上的点的斜率为速度的话,那么可以想像其速度的变化多么具有戏剧性, 其加速或减速来得很突然, 与5次缓动差不多.
    参考以下代码:
     //圆形缓动
            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;

                
    double t = value * this.Duration.TimeSpan.Ticks;
                
    double d = this.Duration.TimeSpan.Ticks;

                
    //加速
                
    //return delta * (1-Math.Sqrt(1-(t/=d)*t)) + from;

                
    //减速
                
    //return delta * Math.Sqrt(1 - (t = t / d - 1) * t) + from;

                
    //先加速,后减速
                if ((t /= (d / 2)) < 1)
                
    {
                    
    return delta / 2 * (1 - Math.Sqrt(1 - t * t)) + from;
                }

                
    return delta / 2 * (Math.Sqrt(1 - (t -= 2* t) + 1+ from;
                
            }

    下载Demo

  • 相关阅读:
    四则运算---3
    四则运算---2
    四则运算---1
    我的软工实践总结
    用例图练习..................................................
    第四次作业——个人作业——软件案例分析
    第三次作业——将排课Excel导入系统
    第二次作业——结对项目之需求分析与原型模型设计
    软工实践练习一(个人)----将Androidstudio的项目共享到github
    第一次作业---安卓开发工具Android studio发展演变
  • 原文地址:https://www.cnblogs.com/zhouyinhui/p/762365.html
Copyright © 2011-2022 走看看