java - java中的分层绘图

标签 java swing java-2d

我正在制作一个 swing 桌面应用程序。它绘制分层 vector 图形,界面使用滚动条并具有放大功能。 vector 图形大约有5层,尤其一层的绘制成本非常高。这些图层可能需要不时地重新绘制(简单的动画)。

现在的情况是这样的:

  1. 已创建缓冲图像
  2. 每个图层都绘制在图像上
  3. 缓冲的图像使用具有相同大小的面板显示在屏幕上,以便可以使用滚动条。

当我放大时,我遇到了性能问题。缩放会使缓冲的图像变得非常大。当比例为 16 倍时,图像的峰值可达 60000x60。当然,这会占用大量内存,我想重新设计它。

我真的不知道从哪里开始,我觉得我在重新发明轮子。我对java2d的了解也很有限。我真的想通过使用库来改进这一点,我知道一定有一些东西具有我想要的功能。有想到的图书馆吗?

最佳答案

不创建缓冲图像。在您知道要显示多少内容之前,您正在对输出进行光栅化。

查看“损坏”矩形,并有一个回调系统,它告诉您需要呈现的栅格的“子部分”,然后仅栅格化所需的像素。无论缩放级别如何,这都应该为您提供相对一致的性能,因为要计算的唯一像素是要显示的像素,而不是概念上像素比以前多 16^2 倍的图像。

关于java - java中的分层绘图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12013425/

相关文章:

java - 在 MPI (Java OpenMPI) 中发送大数据

java - For Loop NullPointerException 与 Apache POI

java - 如何在树莓派上运行Java Swing应用程序

java:清除行时生成的俄罗斯方 block 随机 block

Java2D : Clipping a Graphics object with a Line

java - 使用 Amazon 的 Java Alexa Skill Kit,我可以将自定义 Java 对象放入 session 属性中吗?

java - 在 Fragment 中设置 onClickListener 时出现 NullPointerException

java - 在 swing 中调整图像大小

java - Floyd-Steinberg算法在Java中的实现

java - 如何将 Ellipse2D 和 Rectangle 作为一个形状表示/使用?