我正在尝试编写一个程序,它将图像读入 BufferedImage,在 JFrame 上绘制它,在其中绘制圆圈,然后将其写入文件。
以下代码将完成所有这些,除了保存文件的内容。保存的图像仅包含未触及的 BufferedImage。No Circles ;) 我已经尝试通过更改和添加一些代码来解决这个问题,但这并没有太大帮助。
public class PaintImage extends Component {
BufferedImage img;
private int pngWidth, pngHeight;
public int getPngWidth() {
return pngWidth;
}
public int getPngHeight() {
return pngHeight;
}
public void paint(Graphics g) {
super.paint(g);
//g = img.createGraphics();
g.drawImage(img, 0, 0, 809, 1080, null);
g.drawOval(33, 33, 444, 444);
}
public PaintImage() {
try {
img = ImageIO.read(new File("C:\\karte_vorlage.png"));
pngWidth = img.getWidth();
pngHeight = img.getHeight();
} catch (IOException e) {
}
}
public void writeImage () {
try {
img.getGraphics();
ImageIO.write(img, "png", new File("C:\\save.png"));
} catch (IOException e1) {
e1.printStackTrace();
}
}
}
取消注释 g = img.createGraphics(); 导致图像失真。
请帮我。谢谢大家。
编辑: 1. 方法paint(Graphics g) 被调用两次。在最小化的情况下,它将再次被调用两次。