如何知道动画为什么会卡顿?

2024-01-24

我有一些相当简单的动画(移动文本、移动椭圆等)并在全屏(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(使用前将#替换为@)

如何知道动画为什么会卡顿? 的相关文章

随机推荐

  • 如何将可观察列表转换为数组列表?爪哇

    我试图获取表视图中的所有项目并将它们放入数组列表中以进行进一步处理 这就是我想要实现的目标 但显然这是行不通的 ArrayList
  • 为什么 Channel.waitForConfirmsOrDie 不阻塞?

    我有一个发布 订阅用例 我想在发布端进行阻止 直到每个订阅者确认他们已完成处理发布者发送的消息 我 错误地 假设我可以使用 RabbitMQ 及其 Java amqp client 的 Channel waitForConfirmsOrDi
  • 如何向矢量绘图添加阴影?

    我有一个矢量可绘制对象 category bg 我将其用作 FrameLayout 的背景
  • sklearn随机森林索引feature_importances_如何实现

    我在 sklearn 中使用 RandomForestClassifier 来确定数据集中的重要特征 我如何能够返回实际的功能名称 我的变量标记为 x1 x2 x3 等 而不是它们的相对名称 它告诉我重要的功能是 12 22 等 下面是我当
  • 我应该怎么做才能从 eclipse - Android 连接到服务器?

    大师们 我对这个话题有点迷失 这是我正在尝试做的事情的细分 用户 Android 设备 将位置信息发送到服务器 gt 服务器 server 返回已使用 sql 排序的项目列表 gt db 服务器 获取表信息并返回给用户 gt 用户 Andr
  • 以编程方式配置 p2 更新存储库

    Eclipse wiki 中有一篇文章如何通过向您的产品添加静态conf 文件来配置 RCP 应用程序的用户 p2 默认存储库 Equinox p2 向 RCP 应用程序添加自我更新 配置用户的默认存储库 http wiki eclipse
  • Angular 2 单元测试 - @ViewChild 未定义

    我正在编写 Angular 2 单元测试 我有一个 ViewChild组件初始化后我需要识别的子组件 在这种情况下 它是一个Timepicker来自 ng2 bootstrap 库的组件 尽管具体细节并不重要 之后我detectChange
  • 如何覆盖 Angular 5 中的组件?

    我有一个组件
  • 有没有办法从 Angular 2+ 中删除未使用的导入和声明? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 是否有一些 Visual Studio Code 插件或其他方法可以帮助我们快速有效地整理和组织导入和
  • NodeJs、Mocha 和 Mongoose

    我有以下结构 server db mongooseTest js test userModel test js user userModel js 用他们的代码 猫鼬测试 js var mongoose require mongoose m
  • 解析 Javascript 中自定义格式的“日期和时间”字符串

    我必须解析格式为 2015 01 16 22 15 00 的日期和时间字符串 我想将其解析为 JavaScript 日期对象 对此有什么帮助吗 我尝试了一些jquery插件 moment js date js xdate js 还是没有运气
  • Grails 打包和命名约定

    包装控制器 服务等IE com company controllers com company services 这是一个好的做法还是应该避免 我遇到的另一个值得一提的问题是命名服务示例 SomthingGatewayService gro
  • 在 Android ContentProvider 中连接表和通知 ContentObservers 的最佳实践

    我有一个 ContentProvider 来处理与我的应用程序相关的所有数据插入和检索 我遵循 Virgil Doobjanschi 在 Google I O 上建议的模式 我正在使用第一种模式 我的问题是我有一个由数据库中的多个表表示的逻
  • 动画结束后的 CSS 过渡

    我有一个 css 过渡 可以在悬停时移动元素 还有一个动画 可以在悬停时旋转元素 动画上有一个等于过渡持续时间的延迟 因此在过渡到正确位置后 动画就会开始 它工作得很好 但是 当我们将鼠标移开时 动画会停止 但不会向下过渡 是否可以在鼠标移
  • 从 TypeScript->CommonJS 模块导出带有字体资源的全局样式

    我有一个 TypeScript React 项目 组织如下 tsconfig json package json yarn lock lerna json node modules packages ui library package j
  • 从 rfft2 数组创建 fft2 结果

    我试图通过操作 rfft2 的结果来重新创建完整 fft2 的结果 该文档指出 rfft2 仅计算正系数 因为当输入为实数时 负系数与正系数具有对称性 这对于大型数组非常有用 因为计算 rfft2 比完整的 fft2 快得多 所以下面的代码
  • 如何处理 MySQL 多边形重叠查询?

    例如 我有一个用户表 每个用户都是地图上的一个 正方形 或圆圈 我想找到这样的用户overlap地图上的另一个广场 MySQL 5 6 目前支持此功能吗 MySQL 的开发版本怎么样 请注意 我不是在寻找 查找在该正方形内有一个点的用户 我
  • 小负数四舍五入后保持符号

    即使舍入结果为零 MATLAB 似乎也会记住原始符号 由于小负值已四舍五入为零 因此该信号不再有意义 代码示例 a 0 001 ar round a 2 fprintf a 2f a rounded 2f Zero 2f n a ar 0
  • 将 MILOC 与 Fortran 结合使用:赋值中的等级 0 和 1 不兼容

    给出错误消息的版本 program hello integer a 9 integer index note no dimension here a 1 3 4 5 6 7 8 9 10 index MINLOC a MASK a gt 5
  • 如何知道动画为什么会卡顿?

    我有一些相当简单的动画 移动文本 移动椭圆等 并在全屏 1920x1080 减去任务栏 下运行 WPF Performance Suite 报告整个动画的帧速率约为 50 FPS 脏矩形加法约为 300 矩形 秒 SW 帧在 0 到 4 之