Image を BufferedImage に読み込み、JFrame にペイントし、円をペイントし、File に書き込むプログラムをコーディングしようとしています。
次のコードは、保存されたファイルの内容を除くすべてを実行します。保存された画像には、そのままの BufferedImage のみが含まれます。円はありません ;) コードを変更したり追加したりして、すでに解決しようとしましたが、あまり役に立ちませんでした。
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(); のコメントを外します。歪んだイメージを引き起こします。
私を助けてください。よろしくお願いします。
edit: 1. メソッド paint(Graphics g) が 2 回呼び出されます。最小化の場合、再度 2 回呼び出されます。