这是不好的做法吗?多个Graphics2D对象

时间:2010-06-18 13:58:08

标签: java swing java-2d graphics2d

我创建了一个包含所有图形的JPanel画布;即JLabel。要使动画精灵工作,你必须超越扩展JLabel类的paintComponent。我用这种方式成功实现了动画精灵。

使用Graphics2D画布然后在他们自己的Graphics2D中有多个“图像”是不好的做法吗?

1 个答案:

答案 0 :(得分:2)

我认为它不会太重量级,因为Graphics2D的{​​{1}}应该与传递给JPanel但具有不同边界和偏移的JLabel相同。

我的意思是Swing没有分配新的图形上下文,您可以在该图形上下文中为对象层次结构中的每个元素显示它,但它使用相同的不同功能。这并不意味着panel.getGraphics() == label.getGraphics(),但它们都不是完全不同的对象。

无论如何,如果你需要做很多动画工作,我建议你有自己的精灵课

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

并处理同一paintComponent级别的所有内容。或者至少我一直这样做,因为Java2D不像CoreAnimation那样,每个层都用于移动/动画内容。