首页 > 解决方案 > WPF AnimationClock.Pause() 实际上并没有停止动画计时器的运行

问题描述

我正在使用 DoubleAnimation 在屏幕上移动一些东西,结果我必须能够暂停和恢复动画。所以我使用了一些这样的 XAML:

<Canvas x:Name="TrackPanel" Width="296" Height="20">
    <Image x:Name="RaceCar" Height="60" Margin="0 -30 0 0"/>
</Canvas>

像这样创建一个计时器:

animationValue = new DoubleAnimation
{
    Duration = CalculateDuration(x),
    etc.
};

animationClock = animationValue.CreateClock();

像这样设置转换:

TranslateTransform trans = new TranslateTransform();
RaceCar.RenderTransform = trans;
trans.ApplyAnimationClock(TranslateTransform.XProperty, animationClock);

然后在其他地方:

animationClock?.Controller?.Pause();

和:

animationClock?.Controller?.Resume();

问题是,当动画暂停时,如果持续时间过去,那么我正在移动的元素会跳转到它们本来可以平滑过渡到的最终位置。

换句话说,暂停动画会使屏幕上的东西停止移动,但计时器似乎会继续流逝。当计时器结束时,转换应用最终值。

有没有更好的方法来暂停动画,或者我做错了什么时钟导致它不起作用?

标签: wpfanimation

解决方案


推荐阅读