我正在制作一个 swing 桌面应用程序。它绘制分层 vector 图形,界面使用滚动条并具有放大功能。 vector 图形大约有5层,尤其一层的绘制成本非常高。这些图层可能需要不时地重新绘制(简单的动画)。
现在的情况是这样的:
- 已创建缓冲图像
- 每个图层都绘制在图像上
- 缓冲的图像使用具有相同大小的面板显示在屏幕上,以便可以使用滚动条。
当我放大时,我遇到了性能问题。缩放会使缓冲的图像变得非常大。当比例为 16 倍时,图像的峰值可达 60000x60。当然,这会占用大量内存,我想重新设计它。
我真的不知道从哪里开始,我觉得我在重新发明轮子。我对java2d的了解也很有限。我真的想通过使用库来改进这一点,我知道一定有一些东西具有我想要的功能。有想到的图书馆吗?
最佳答案
不创建缓冲图像。在您知道要显示多少内容之前,您正在对输出进行光栅化。
查看“损坏”矩形,并有一个回调系统,它告诉您需要呈现的栅格的“子部分”,然后仅栅格化所需的像素。无论缩放级别如何,这都应该为您提供相对一致的性能,因为要计算的唯一像素是要显示的像素,而不是概念上像素比以前多 16^2 倍的图像。
关于java - java中的分层绘图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12013425/