1

我正在制作一个摆动桌面应用程序。它绘制分层矢量图形,界面使用滚动条并具有放大功能。矢量图形大约有5层,其中一层特别是绘制起来非常昂贵。图层可能需要不时重新绘制(简单动画)。

目前的情况如下:

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

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

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

4

2 回答 2

1

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

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

于 2012-08-17T21:34:19.073 回答
1

你可以看看JHotDraw。我不确定它是否具有您需要的功能。

另一个想法是不创建大图像,只创建小图像并在放大时将其放大(在 Java 中放大速度很快)。当然,这会导致图像质量较低(像素化),但目前这是可以接受的,您可以在渲染后立即将其替换为高质量矢量图形。

于 2012-08-17T23:01:28.177 回答