博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
WPF与缓动(三) 指数缓动
阅读量:7057 次
发布时间:2019-06-28

本文共 876 字,大约阅读时间需要 2 分钟。

原文:

                                                         WPF与缓动(三) 指数缓动

                                                                             周银辉
指数缓动给人的感觉是加速度很大.
它的原始公式来自:P(t) = Math.Pow(2,   10*(t-1));
与其他缓动一样,我在这里就直接给出其核心代码了:

img_a6339ee3e57d1d52bc7d02b338e15a60.gif
 
//
指数缓动
img_a6339ee3e57d1d52bc7d02b338e15a60.gif
        
protected
 
override
 
double
 GetCurrentValueCore(
double
 defaultOriginValue, 
double
 defaultDestinationValue, AnimationClock animationClock)
img_405b18b4b6584ae338e0f6ecaf736533.gifimg_1c53668bcee393edac0d7b3b3daff1ae.gif        
img_a76e9bb6ed00cf1c9c9f4ee2f04b558b.gif
{
img_33d02437d135341f0800e3d415312ae8.gif            
double
 from 
=
 (
this
.From
==
null
?
defaultDestinationValue:(
double
)
this
.From);
img_33d02437d135341f0800e3d415312ae8.gif            
double
 to 
=
 (
this
.To
==
null
?
defaultOriginValue:(
double
)
this
.To);
img_33d02437d135341f0800e3d415312ae8.gif            
double
 delta 
=
 to 
-
 from;
img_33d02437d135341f0800e3d415312ae8.gif            
double
 value 
=
 animationClock.CurrentProgress.Value;
img_33d02437d135341f0800e3d415312ae8.gif
img_33d02437d135341f0800e3d415312ae8.gif
img_33d02437d135341f0800e3d415312ae8.gif            
//
加速
img_33d02437d135341f0800e3d415312ae8.gif            
//
return delta * Math.Pow(2, 10 * (value - 1)) + from;
img_33d02437d135341f0800e3d415312ae8.gif
img_33d02437d135341f0800e3d415312ae8.gif            
//
减速
img_33d02437d135341f0800e3d415312ae8.gif            
//
return delta * (-Math.Pow(2, -10 * value) + 1) + from;
img_33d02437d135341f0800e3d415312ae8.gif
img_33d02437d135341f0800e3d415312ae8.gif            
//
先加速,后减速
img_33d02437d135341f0800e3d415312ae8.gif
            
double
 t 
=
 value 
*
 
this
.Duration.TimeSpan.Ticks;
img_33d02437d135341f0800e3d415312ae8.gif            
double
 d 
=
 
this
.Duration.TimeSpan.Ticks;
img_33d02437d135341f0800e3d415312ae8.gif            
if
 ((t
/=
(d
/
2
)) 
<
 
1
)
img_2887d91d0594ef8793c1db92b8a1d545.gifimg_7a2b9a960ee9a98bfd25d306d55009f8.gif            
img_a76e9bb6ed00cf1c9c9f4ee2f04b558b.gif
{
img_33d02437d135341f0800e3d415312ae8.gif               
return
  delta 
/
 
2
 
*
 Math.Pow(
2
10
 
*
 (t 
-
 
1
)) 
+
 from;
img_105a1e124122b2abcee4ea8e9f5108f3.gif            }
img_33d02437d135341f0800e3d415312ae8.gif            
return
 delta 
/
 
2
 
*
 (
-
Math.Pow(
2
-
10
 
*
 
--
t) 
+
 
2
+
 from;
img_33d02437d135341f0800e3d415312ae8.gif            
img_05dd8d549cff04457a6366b0a7c9352a.gif        }

点击这里下载

转载地址:http://szmol.baihongyu.com/

你可能感兴趣的文章
纯手工 css+html 简易三级导航栏(横向)
查看>>
个人码风
查看>>
基于昨天调代码的收获
查看>>
iOS多线程编程之Grand Central Dispatch(GCD)介绍和使用
查看>>
QT编写TCP的问题
查看>>
poj1456 结构体排序+贪心
查看>>
javascript 乘法口诀表
查看>>
views 视图函数
查看>>
MySql详解(一)
查看>>
解题思路:蓄水池问题
查看>>
android 实时显示系统时间
查看>>
fatal error: asm/system.h: No such file or directory
查看>>
为什么要设计
查看>>
SerializableObj
查看>>
2018年5月31日笔记
查看>>
(转)CentOs上配置samba服务
查看>>
Photoshop给草坪上的人物加上唯美的紫色霞光
查看>>
移动平台对 META 标签的定义
查看>>
curl 命令详解
查看>>
启动改为本地Ip
查看>>