.net - 奇怪的断断续续的 WPF 动画

标签 .net wpf animation

我正在制作一个在桌面上滚动信息的应用程序。 window 是透明的。我从简单开始,尝试找到动画效果的最低 CPU 使用率,并从一个简单的 TextBlock 开始。

在我的开发机器上,通过 DoubleAnimation 设置 Canvas.Left 属性,我在屏幕上获得了非常流畅的动画。然而,在另一台 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 Duo,充足的内存,最新的驱动程序,最新的服务包,我只是不知道还能做什么。我希望只是更高的 CPU 使用率,而不是滞后。

最佳答案

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

技术说明在这里:

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

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

关于.net - 奇怪的断断续续的 WPF 动画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/313003/

相关文章:

c# - 在运行时删除目录

.net - 我应该使用哪个编程平台来使用具有 WS-Security 的 SOAP 服务?

wpf - EF 6 中的异步等待问题

wpf - 给 WPF Grid 一个 ScrollViewer 减去滚动条的宽度

css - 背景位置不适用于 CSS 动画和线性渐变

twitter-bootstrap - 这是在显示时跳过 css3 动画的方法吗?

c# - 在哪里处理 Task 抛出的异常

c# - 在 C# 中创建特定时区的 DateTime

wpf - Gridsplitter 拉伸(stretch)限制 - WPF

jquery - 悬停时动画背景图像而不是顶部的文本