Рисование фигур вне paintComponent () (Java) - PullRequest
1 голос
/ 16 марта 2019

Я новичок в графике в Java, и мне трудно понять всю концепцию рисования всей графики одним методом (paintComponent ()).Мне было просто любопытно посмотреть, сможем ли мы рисовать графику вне paintComponent.Это вообще возможно?Можно ли написать строку в основном методе, например: fillRect (100,100, 500,400);и это нарисовать прямоугольник?Если это возможно, это нормально для Java?

По сути, я спрашиваю, можете ли вы рисовать графику вне класса paintComponent, и это обычно.

1 Ответ

0 голосов
/ 16 марта 2019

Вы можете нарисовать до BufferedImage, но если вы хотите, чтобы оно было нарисовано на экране, то обычно вам нужно использовать paintComponent. Вы можете передать экземпляр Graphics, который передается в paintComponent, в другие классы, которые могут выполнять более сложные операции, но вы никогда не должны поддерживать ссылку на этот экземпляр или пытаться рисовать вне контекста цикла рисования.

См. Рисование в AWT и Swing и Выполнение пользовательской живописи для получения более подробной информации

Если вам нужен больший контроль над процессом рисования, вы также можете использовать BufferStrategy

Подробнее см. BufferStrategy и BufferCapabilities

Вещи, которые вы должны знать:

  • Swing использует подход «пассивного рендеринга», это означает, что рисование происходит, когда система рисования решает, что это необходимо сделать. Вот почему вы ДОЛЖНЫ выполнять рисование в контексте цикла рисования (т. Е. В методе paintComponent)
  • BufferStrategy использует подход "активного рендеринга", который дает вам полный контроль над процессом рисования, но он не способен рисовать компоненты Swing
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...