【发布时间】:2012-10-01 08:21:21
【问题描述】:
我正在努力平滑 WPF 动画
其实我的动画代码如下:
private void AnimateX ( FrameworkElement element, double XMoveStart, double XMoveEnd, int secondX)
{
SineEase eEase = new SineEase();
eEase.EasingMode = EasingMode.EaseInOut;
Storyboard sb = new Storyboard();
DoubleAnimation daX = new DoubleAnimation(XMoveStart, XMoveEnd, new Duration(new TimeSpan(0, 0, 0, secondX, 0)));
daX.EasingFunction = eEase;
Storyboard.SetTargetProperty(daX, new PropertyPath("(Canvas.Left)"));
sb.Children.Add(daX);
element.BeginStoryboard(sb);
}
上面的代码是一个简单的水平移动对象的方法。当只有一个物体在移动时,就可以了。但是,每当两个或多个对象一起移动时(在前一个动画尚未完成时对另一个对象调用 AnimateX 方法),动画就会开始变得抖动。我所说的抖动是指在动画过程中物体有点晃动。
【问题讨论】:
-
你知道你的电脑是用软件渲染动画还是硬件加速?
-
是的,我只是用 RenderCapability 测试它,它是硬件加速的。
-
您是否让主线程忙于使用 Invokes 进行其他操作?动画在主线程上运行,如果您有一个多线程应用程序,主线程可能会忙于更新 UI 上的其他内容。
-
是的,我的应用程序是多线程的,它有时也忙于更新其他 UI,但即使我在没有其他 UI 工作的情况下尝试了动画,它仍然有点紧张。
-
我会在一个单独运行的新应用上尝试你的动画,看看是否有一些后台工作被忽视了。
标签: wpf animation storyboard