C#中的“动作缓和”效果

时间:2012-02-27 10:23:49

标签: c# wpf animation timer easing

我需要增加一个整数,但我希望减轻它增加的速度。所以说例如我有一个等于0的int,我希望这个int最终达到100但逐渐递增。有没有人有这方面的经验?

2 个答案:

答案 0 :(得分:2)

hcb的答案适用于100,但是不同的值需要不同的缓动值。

更广泛的答案是使用正弦,这意味着无论您想要什么样的最终价值,或者您采取的步骤多么轻松都是相同的。

private void EaseIn(int easeTo)
{
     for (int n = 0; n < easeTo; n++)
     {
          double degrees = (n * 90) / easeTo;
          double easedN =  easeTo * Math.Sin(degrees * (Math.PI / 180));

          Console.WriteLine("Eased n = " + easedN.ToString());
     }
}

答案 1 :(得分:1)

喜欢这个?:

for (int i = 0; i <=100; i++)
{
    Thread.Sleep(i);
}

或者像这样:

float j = 1;
float ease = 0.005;
for (float i = 0; i <=100; i+=j)
{
    j -= ease;
}