wpf - 为什么 WPF/RotateTransform 使用如此多的 CPU?

标签 wpf performance hardware rendering

重现步骤:

  1. 创建新的解决方案/添加新的 WPF 应用程序项目。
  2. 在主窗口中仅放置一个 Canvas 。
  3. 创建 RotateTransform + PageUp/Down 事件以将角度增加 +-10。
  4. 在 Canvas 上放置 50 个多边形
  5. 按 PageUp/Down(并按住)

在我的电脑上,CPU 使用率为 80%。

  • 现在尝试放置 1000 个多边形并按 PageUp/Down - CPU 可以在 1-2 帧/秒时达到 100%。
  • 我检查了 RenderCapability.Tier,它是 2 - 意味着它应该通过硬件渲染所有内容。

    但是它不起作用,为什么?

    最佳答案

    更多信息会很有用,例如您使用的多边形类型、您的显卡以及您正在使用的 WPF 版本。

    我尝试了你的例子,500 个简单的多边形没有任何问题。 (酷睿 2 双核、8800 GTS)。您的示例以及其他时候,当您拥有相当复杂的内容且不经常更改但您正在对其进行转换时,可以从 BitmapCache 中受益匪浅。 .

    <Canvas.CacheMode>
        <BitmapCache />
    </Canvas.CacheMode>
    

    使用 BitmapCache,您应该能够转换任意数量的元素,尽管每当需要重新渲染它们时,您仍然会受到性能影响。如果您使用复杂路径,您也可以尝试 freezing他们。

    关于wpf - 为什么 WPF/RotateTransform 使用如此多的 CPU?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1142373/

    相关文章:

    windows - 从 Windows 隐藏监视器,仅从我的应用程序使用它

    wpf - 在 XAML 中创建嵌套类的实例

    c# - 通过复选框更改一个项目控件的可见性

    c# - 数据网格中的复选框选中事件不触发wpf mvvm

    c# - 如何将信息从 ThreadPool.QueueUserWorkItem 传递回 UI 线程?

    python - 如何使用 Python 实现最大写入速度?

    代码基准测试统计 -

    javascript - 为什么没有图像数据引用?

    hardware - 设置专用构建 PC - 需要建议

    windows - 我应该为 Windows 7 分区留出多少空间?