我有一些相当简单的动画(移动文本、移动椭圆等)并在全屏(1920x1080 减去任务栏)下运行,WPF Performance Suite 报告整个动画的帧速率约为 50 FPS。脏矩形加法约为 300 矩形/秒,SW 帧在 0 到 4 之间,HW 帧在 3 到 5 之间。视频内存使用量约为 80 MB。
问题是动画每隔半秒就会断断续续。它绝对不是流体:-(
我的机器是一台新的戴尔笔记本电脑 XPS 15,配备 GeForce GT 435 和 2GB 内存。 - 驱动程序是最新的。 (同样的行为也发生在我的上网本(全屏)上,所以我认为这与硬件无关。)
如果我把窗口变小,口吃就会消失。
最简单的动画也会出现卡顿现象 - 即使只有几个元素,但添加更多元素肯定会使其更加明显。
我怎样才能找出导致这种口吃的原因?
回想起来,我其实还没有见过任何WPF动画能够流畅地全屏运行。这可能吗?
您是否尝试过为动画设置较低的“最大帧速率”?
<Storyboard Timeline.DesiredFrameRate="10">
<!-- ....blah blah blah -->
</Storyboard>
如果您的动画导致子元素或父元素的大量重新计算,请更改期望帧率将对系统的计算数量产生级联效应。
另外,请查看本节的“备注”部分link https://learn.microsoft.com/en-us/dotnet/api/system.windows.media.animation.timeline.desiredframerate#remarks。它解释了为什么/何时应该使用它。
如果设置较低的帧速率可以解决卡顿问题,那么您需要考虑简化 XAML,以限制动画每一帧所需的重新计算量(限制调整大小或以任何方式影响的子对象或父对象的数量)动画所做的帧/更改。
您可能还想查看“WPF 性能套件 https://learn.microsoft.com/en-us/previous-versions/aa969767(v=vs.110)“。这是一组很棒的工具,可以确定 WPF 应用程序中到底发生了什么,查看窗口的哪些部分以及何时重新绘制,以及每个 XAML 元素的 CPU 使用情况!
希望这可以帮助!
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)