gpt4 book ai didi

performance - JavaFX 2 绘图性能

转载 作者:行者123 更新时间:2023-12-04 10:01:25 27 4
gpt4 key购买 nike

感觉JavaFX 2的绘图性能比Swing差。我认为原因之一是您如何绘制事物,例如绘制线条时,必须创建 Line为每条线添加对象并将其添加到某个容器中,而在 Swing 中,只需获取一次 Graphics2D,然后执行 drawLine,而无需每次都创建新对象。那么,有没有更高效的方式来使用 JavaFX 2 进行绘制,例如如果您必须绘制大约 3000 条弧线?什么是最好的“绘图表面”?目前我正在使用 Group .感谢您的任何提示!

最佳答案

您当前使用 Group 的方法可能很好,并且您可能会发现在您的 Group 内绘制 3000 条弧线的性能对于您的应用程序用户来说是完全可以接受的。

当前使用组的替代方法是使用布局 Pane ,这将添加一些方便的功能,但会增加额外的开销层,当您有数千个易于手动布局的对象时,这是不必要的。

JavaFX mailing list archive讨论即将推出的 JavaFX 2.2 直接绘制接口(interface)(称为 Canvas 节点)及其含义。

尽管将对象粘贴在容器中似乎性能较差,但如果需要,容器实现可以利用现代 GPU 中内置的加速保留模式渲染硬件。另请注意,JavaFX 架构在内部跟踪脏区并缓存昂贵的渲染操作的结果以提高性能。因此,容器的使用本身并不意味着比可能依赖于立即模式实现的直接绘制接口(interface)更慢的性能。

选择绘图表面将取决于应用程序。大多数 JavaFX 应用程序的最佳表面将是场景图节点的集合,而不是 Canvas 节点。在场景图中使用多个节点而不是单个 Canvas 节点(通常)会更容易开发,并且性能将完全可以接受。

最终,很可能会写很多博客文章来比较 Canvas 与许多场景图对象的性能,并可能与其他框架(如 html canvas、java2d、swing 等)进行比较。因此,及时回答这样的问题会更容易.

有关的

奥斯瓦尔多的 JavaFX performance analysis ,虽然很老,但还包括对您问题中提出的一些问题的深入讨论。

Performance Tips and Tricks 上有一个不错的部分在 openjfx wiki .

有一些相关的 StackOverflow JavaFX 性能问题:

  • JavaFX 2 path drawing performance
  • What is the best way to display millions of images in Java?
  • 关于performance - JavaFX 2 绘图性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10506637/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com