Как я могу нарисовать часть моего моделирования Java2D, которая не меняется на изображение / буфер, чтобы мне не приходилось каждый раз перерисовывать его примитивы? - PullRequest
0 голосов
/ 25 октября 2009

Как я могу нарисовать часть моего моделирования Java2D, которая не меняется на изображение / буфер, поэтому мне не нужно каждый раз перерисовывать его примитивы?

У меня есть часть моего моделирования Java2Dэто требует от меня, чтобы нарисовать тысячи маленьких линий.Однако эта часть приложения не изменяется после отрисовки, поэтому нет смысла перерисовывать тысячи примитивов на каждой итерации цикла (делая активный рендеринг).

Итак, какой объект я использую длянарисовать и сохранить его, а затем разрешить мне просто нарисовать все это изображение на моем холсте, а затем нарисовать поверх него, что изменится?

Ответы [ 2 ]

3 голосов
/ 25 октября 2009

Можно нарисовать до BufferedImage, затем позже нарисовать содержимое BufferedImage в компоненте Swing, например JPanel.

Чтобы нарисовать BufferedImage, можно использовать createGraphics, чтобы получить Graphics2D контекст изображения:

BufferedImage img = new BufferedImage(width, height, type);
Graphics2D g = img.createGraphics();
// do drawing using the Graphics2D object.
g.dispose();

Затем, нарисуйте содержимое BufferedImage в JPanel, переопределив метод paintComponent:

public void paintComponent(Graphics g) {
    super.paintComponent(g);
    g.drawImage(img, 0, 0, null);  // Draw img onto the JPanel.
}
0 голосов
/ 25 октября 2009

Обратите внимание, что вам также следует переопределить getPreferredSize (), чтобы вернуть размер изображения, или установить предпочтительный размер на JPanel, равный размеру вашего изображения. Если вы этого не сделаете, у вас будут проблемы с компоновкой с вашим подклассом JPanel.

...