2

我正在制作一个在桌面上滚动信息的应用程序。窗户是透明的。我一开始很简单,试图找到用于动画制作的最低 CPU 使用率,我从一个简单的 TextBlock 开始。

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

系统上的 CPU 使用率永远不会超过 10%。我可以看到我没有做任何软件渲染。我桌面上的显卡是 nVidia Geforce 7xxx 系列,其中一台不稳定的机器使用的是 nVidia Geforce 88xx 卡。所有人都使用相同的驱动程序版本和最新的。屏幕分辨率通常是 1920x1080,除了我的开发机器要大得多(2560x1600)

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

我搞不清楚了。波涛汹涌的几乎就像发条一样。有问题的机器上没有其他事情发生,所有测试的机器都是 Core 2 Duos,大量的内存,最新的驱动程序,最新的服务包,我只是不知道还能做什么。我希望只是更高的 CPU 使用率,而不是滞后。

4

3 回答 3

3

如果您使用 AllowsTransparency 属性,您将遇到性能和兼容性问题。

技术解释在这里:

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

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

于 2008-11-24T09:06:38.953 回答
0

我最近使用 WPF 创建的程序遇到了非常相似的问题。它在我正在使用的运行 windows server 2003 的构建机器上运行良好,但是当我将它切换到具有足够资源来运行程序的 XP 机器时,它变得非常不稳定。基本上它每秒获得一帧。动画的每一个刻度都会移动。我听说过这个问题,它会在动画完成一个周期(通过动画)后消失,但对我来说,它永远保持这种状态。

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

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

谢谢,埃里克

于 2008-12-08T01:52:42.253 回答
0

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

谢谢,埃里克

于 2008-12-08T02:07:10.947 回答