Это плохая практика? Несколько объектов Graphics2D

Я создал холст JPanel, содержащий всю графику; а именно JLabel. Чтобы заставить анимированные спрайты работать, вы должны переопределить paintComponent расширенного класса JLabel. Я успешно реализовал анимированные спрайты таким образом.

Является ли плохой практикой иметь холст Graphics2D, а затем иметь несколько «изображений» в своем собственном Graphics2D?


person Community    schedule 18.06.2010    source источник


Ответы (1)


Я не думаю, что это будет слишком тяжеловесно, поскольку Graphics2D вашего JPanel должно быть тем же, что и JLabel, но с другими границами и смещениями.

Я имею в виду, что Swing не выделяет новый графический контекст, в котором вы можете отображать каждый элемент внутри иерархии объектов, но использует его с другими возможностями. Это не означает, что panel.getGraphics() == label.getGraphics(), но и не совсем разные объекты.

В любом случае, если вам нужно много работать с анимацией, я бы посоветовал вам иметь собственный класс спрайтов.

class Sprite
{
  Point2D position;
  Rectangle2D size;
  float rotation;
}

и обрабатывать все на том же уровне paintComponent. Или, по крайней мере, я всегда поступал так, поскольку Java2D не похож на CoreAnimation, который предназначен для использования на уровне каждого слоя для перемещения/анимации контента.

person Jack    schedule 18.06.2010