我正在制作一个swing桌面应用程序。它绘制分层矢量图形,界面使用滚动条并具有放大的能力。大约有5层矢量图形,特别是一层绘制非常昂贵。这些图层可能需要不时重新绘制(简单的动画)。
现在的情况如下:
我放大时会遇到性能问题。缩放可以使缓冲的图像非常大。当刻度为16x时,图像可以在60000x60处达到峰值。当晚这需要很多记忆,我想重新设计它。
我真的不知道从哪里开始,我觉得我正在重新发明轮子。我对java2d的了解也非常有限。我真的想通过使用一个库来改进它,我知道必须有一些具有我想要的功能。想到的任何图书馆?
答案 0 :(得分:1)
不要创建缓冲图像。在知道要显示多少输出之前,您正在栅格化输出。
查看“损坏”矩形,并有一个回调系统,告诉你它需要呈现的栅格的“子部分”,然后只栅格化所需的像素。无论什么样的缩放级别,这应该会给你相对一致的性能,因为要计算的唯一像素是要显示的像素,而不是一个概念上比以前多16 ^ 2倍像素的图像。
答案 1 :(得分:1)
您可以查看JHotDraw。我不确定它是否具备您需要的功能。
另一个想法不是创建一个大图像,只是一个小图像,并在放大时放大它(Java中的放大速度很快)。当然,这会导致质量较低(像素化)的图像,但目前这是可以接受的,一旦渲染就可以用高质量的矢量图形替换它。