将 WPF 情节提要替换为自定义 While 循环

本文关键字:自定义 While 循环 替换 WPF | 更新日期: 2023-09-27 18:31:23

我想用一些自定义的 WHILE 循环替换 WPF 情节提要来检查它是否可行。我拥有的代码如下。

public void RestartAnimation(int seconds)
{
            da.From = this.ActualWidth; 
            da.To = -ContentActualWidth; 
            da.RepeatBehavior = RepeatBehavior.Forever;
            da.Duration = new Duration(TimeSpan.FromSeconds(seconds));
            Timeline.SetDesiredFrameRate(da, 15);
            if (sb.Children.Count == 0)
            {
                sb.Children.Add(da);
                Storyboard.SetTargetProperty(da, new PropertyPath("(Canvas.Left)"));
                Storyboard.SetTarget(da, cp);
                sb.Begin();
            }
}

我想它应该是里面的一些计时器和 WHILE......

任何线索如何做到?

谢谢!!

将 WPF 情节提要替换为自定义 While 循环

我会

说,不要使用 while 或任何其他循环,因为那时您将在循环运行时冻结程序。最简单的方法(不一定是最好的)是设置一个计时器,该计时器每帧执行一次左右,因此每秒执行 30-120 次,并逐步执行动画检测计时器调用之间实际经过了多少实时时间。

因此,如果您需要以每秒 10

个单位的速度移动一个对象,并且您的计时器以某个快速的间隔执行,我会找到上次进行计时器调用的时间,现在的时间,找到 dT(时间变化),然后做 dT*10,移动该单位数的对象。

随着计时器的迭代,您应该看到对象在不冻结软件的情况下移动。