奇怪的Choppy WPF动画

时间:2008-11-23 21:43:03

标签: .net wpf animation

我正在创建一个在桌面上滚动信息的应用程序。窗口是透明的。我开始简单,试图找到最低CPU用于动画的东西,我开始使用一个简单的TextBlock。

在我的开发机器上,我在屏幕上获得一个非常流畅的动画,使用DoubleAnimation设置Canvas.Left属性。但是,在另一台Vista计算机上,我每6到7秒就会出现1秒的延迟。在XP机器上,它再次非常流畅。我试过其他3台机器,50%好坏。我在所有机器上都安装了3.5 SP1。

系统上的CPU使用率从未超过10%。我可以看到我没有做任何软件渲染。我桌面上的视频卡是nVidia Geforce 7xxx系列,其中一台不稳定的机器使用的是nVidia Geforce 88xx卡。所有都使用相同的驱动程序版本和最新的。屏幕res通常是1920x1080,但我的Dev机器除外(2560x1600)

但是 - 如果我使用Perforator禁用脏区支持 - 它在所有机器上都很流畅,但CPU现在为30%

我迷路了。波涛汹涌几乎就像发条一样。在有问题的机器上没有其他任何东西,所有测试的机器都是Core 2 Duos,大量的ram,最新的驱动程序,最新的Service Pack,我只是不知道还能做什么。我希望只是更高的CPU使用率,而不是滞后。

3 个答案:

答案 0 :(得分:3)

如果您使用的是AllowTransparency属性,则会出现性能和兼容性问题。

技术解释如下:

http://blogs.msdn.com/dwayneneed/archive/2008/09/08/transparent-windows-in-wpf.aspx

从我个人(和痛苦)的经验来看,一些显示驱动程序会破坏你的程序,而其他人会使Windows在屏幕上长时间使用WPF透明窗口时工作不正常,我建议你尝试重新编写你的GUI来不使用透明度。

答案 1 :(得分:0)

我最近使用WPF创建的程序遇到了类似的问题。它在我正在使用的运行Windows Server 2003的构建机器上工作正常,但是当我将它切换到具有足够资源来运行程序的XP机器时,它变得非常不连贯。基本上它每秒获得一帧。动画将随之移动的每个刻度。我已经听说过这个问题,它在动画完成一个循环(通过动画)之后就会消失,但对我来说它永远都是这样的。

我没有使用AllowTransparency属性,所以如果其他人有任何想法我会非常感激。

(它失败的机器也是Core 2 Duo)

谢谢, 埃里克

答案 2 :(得分:0)

好的,我刚发布以前的陈述后才解决了这个问题。事实证明我还没有在这台电脑上安装我的图形驱动程序,并且在我开始工作之后它开始非常顺利。也许它以前使用某些软件图形渲染或其他东西。因此,我建议您将图形驱动程序更新为最新版本,以查看是否有助于解决问题。然而,原始海报似乎有一个不同的问题,因为它似乎正确安装了他的fx驱动程序。我不确定nvidia 8800显卡是否与directx有任何问题。

谢谢, 埃里克