Swing Bild laden, Kreise drin malen, Schreiben

jBen

Mitglied
Hallo,

habe ein kleines Problem. Ich lade ein Bild, passe es größenmässig auf den Frame ein und male es auf dem Frame. Dann sollen Punkte drauf gemalt werden. Das ganze soll zum Schluss exportiert werden.

Ich bin soweit, dass er das Bild tatsächlich speichert allerdings den ganzen Frame. Dabei bedeckt das bild nur die rechte Hälfte.

Welche Möglichkeit ist die eleganteste um mein Vorhaben umzusetzen?

Vielen Dank für eure Hilfe.
 
Java:
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();
	}
}

Folgener Code bewirkt ausgabe auf dem JFrame mit einem Kreis. Das gespeicherte Bild ist allerdings ohne Kreis.
//g = img.createGraphics(); entkommentiert bewirkt, dass der JFrame leer ist und ein verzerrtes Bild gespeichert wird. Wo liegt das PRoblem? 🙂

edit: das Ändern von Graphics zu Graphics2D bewirkt ein schönes Bild allerdings ohne Kreis. Graphics hat Kreise angedeutet, allerdings in Weiß, wie auch immer. ???:L
 
Zuletzt bearbeitet:
Man müßte genauer sehen, wie dieser Code in den übrigen Code "eingebettet" ist. Wie werden denn die Punkte/Kreise gespeichert? Dass das Zeichnen über diese paint-Methode läuft sieht suspekt aus.

BTW:
g = img.createGraphics();
...
g.dispose(); // Nicht vergessen
 

Neue Themen


Zurück
Oben