0

是否有可能在图形(或 Graphics2D)对象的特定位置上绘制 JPanel?我覆盖了我的画布的绘制方法,并在那里调用了 panel.paint(g),但它并没有像我希望的那样工作。

@Override
public void paint(Graphics g){
  Dimension size = panel.getPreferredSize();
  panel.setBounds(pos.x, pos.y, size.width, size.height);
  panel.paint(g);
}

size 对象已按照我的意愿正确定义,所以这不是问题。此外,pos 在屏幕上包含正确的 x 和 y。

4

2 回答 2

1

您可能应该使用paintComponent而不是paint,因为后者是 AWT 方法,而前者是 Swing 方法。

Swing 的一个好处paintComponentGraphics传递的实际上总是 a Graphics2D,所以你可以:

Graphics2D g = (Graphics2D)lg;

现在您可以使用getTransform来保存旧的转换,然后使用 或 和Graphics2D方法setTranform修改scale转换。不要忘记恢复旧的 transform,否则您可能会捏造由该上下文绘制的下一件事。translaterotate

于 2009-12-30T12:21:47.293 回答
0

根据具体情况,我会补充一点,绘制到 BufferedImage 可能是合适的。您可以使用 BufferedImage.getGraphics() 获取图形上下文。然后,您可以通过任何适合您的方式绘制 BufferedImage 的上下文。

于 2009-12-30T12:25:40.120 回答