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

  • 相关阅读:
    C#:新邮件监听及搜索
    PHPexcel导入数据的时候出现object解决方法
    selectpage选择订单的时候,订单数量和金额会动态改变
    三、变量的简述
    TP框架where条件和whereOr条件同时使用
    一.OS运行机制
    二.进制简述
    1.go语言入门
    C# Redis学习系列二:Redis基本设置
    C# Redis学习系列一:Redis的认识、下载、安装、使用
  • 原文地址:https://www.cnblogs.com/zhouyinhui/p/762365.html
Copyright © 2011-2022 走看看