因此,在这段代码中,40x40 的正方形可以通过调用方向方法在窗口上移动,并且我试图让一艘宇宙飞船出现而不是正方形。无论我尝试什么,它都不起作用。
public void paintComponent (Graphics g) {
ImageIcon wallpaper = new ImageIcon("images/JGalagawallpaper.png");
image = wallpaper.getImage();
g.drawImage(image, 400, 400, null);
ImageIcon ship = new ImageIcon("images/galaga.png");
galaga = ship.getImage();
super.paintComponent(g);
Graphics2D graphic = (Graphics2D) g;
graphic.fill(new Rectangle.Double(x, y, 40, 40));
//graphic.drawImage(galaga, x, y, 40, 40);
}
我的问题是,如何让那个东西出现?我已经尝试过修改graphic.drawImage,但是效果并没有达到我的预期。这就是注释掉的代码。
最佳答案
g.drawImage(image, 400, 400, null);
首先绘制图像。
super.paintComponent(g);
然后调用上面的代码,该代码用于指定面板的背景颜色,从而覆盖图像。上面的语句应该是绘画方法的第一条语句。
ImageIcon wallpaper = new ImageIcon("images/JGalagawallpaper.png");
绘画方法仅用于绘画。不要在方法中执行 I/O。应在类的构造函数中读取图像,以便仅读取一次,而不是每次重新绘制组件时读取图像。
您还需要查看绘制图像的位置的坐标。也许面板没有那么大?
您是否通过显示图像大小来验证图像是否已正确读取?
关于Java Graphics2D 图像移动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43664805/