прокси 'растяжение изображения' для медленного компонента Swing? - PullRequest
2 голосов
/ 08 сентября 2011

У меня есть приложение, которое отображает графики, используя JFreeChart. Так получилось, что эти графики большие, и JFreeChart работает не очень быстро, что приводит к ужасным временам перерисовки, особенно при изменении размера графика.

Мне нужен способ растянуть изображение, представляющее график, с изменением размера (подобно тому, как iPhone представит снимок экрана с остановленным приложением во время его повторного запуска), и выполнить полную перерисовку только после того, как пользователь получит отпустил мышь (т.е. как только окончательный размер сюжета известен).

Особенности взаимодействия на графике могут остаться неизменными (очевидно, если не изменять размер).

Есть ли для этого универсальное решение / оболочка Swing? (нет причины, по которой он должен быть специфичным для JFreeChart).

Приветствия

1 Ответ

3 голосов
/ 08 сентября 2011

Нет конкретного ответа, просто возможная стратегия

  • при запуске изменения размера закрасьте график в BufferedImage и покажите и измените размер этого изображения вместо графика
  • при остановке изменения размера удалите изображение и снова покажите график

в JDK 7 вы можете использовать JLayer для изображения / манипуляции.

Редактировать

В качестве альтернативы (для JLayer) вы можете использовать CardLayout: показ одной карты с изображением при изменении размера и другой карты с графиком без изменения размера. SwingX ImagePainter может выполнять масштабирование изображения при изменении размера

...