2D-Grafik Inhalt eines Graphics in anderes Graphics zeichnen....

Dumdidum

Mitglied
Ich will mal ausnahmsweise nicht lange ausholen und beschreiben warum ich das eigentlich machen will. Aber letztendlich habe ich ein Graphics Object das ich mir speichere und möchte den Inhalt in ein anderers Graphics Object zeichnen... allerdings bin ich gerade verwirrt, wie ich das am Schlausten mache... 😳


Ziel wäre also sowas
Java:
Graphics save......

Graphics meinNeues = neu Graphics();
meinNeues.paint(save);

Ich mein Theoretisch könnte ich versuchen mir ein BufferedImage statt einem Graphics zu speichern, dies geht aber leider nicht so einfach. Und irgendwie sollte das ja auch gehen, dass ich einfach den Inhalt eines Graphics in ein anderes Zeichne?
 
Also das Graphics2D Object, das in Swing durch den Komponentenbaum gereicht wird und dir zB in der paintComponent mitgegeben wird, speichert in dem Sinne nichts (es hat eigentlich in jeder Komponente nur die korrekte Translation und den Clipping-Bereich). Zeichenoperationen werden "nur ausgeführt" und sind beim nächsten Zeichnen wieder weg.

"Speichern" geht also tatsächlich nur, wenn du die Komponente auf ein BufferedImage zeichnest.

Java:
final BufferedImage img = new BufferedImage(w, h, type);
myComponent.paint(img.createGraphics());
 
Hallo,

das Graphics-Objekt kommt von einem Objekt, welches "bemalt" werden kann.

Hier z. B. ein JPanel...

Java:
	public void paintComponent(Graphics g) {
		Graphics2D g2d = (Graphics2D) g.create();
		try {
			// male irgendwas
		} finally {
			g2d.dispose();
		}
	}

... oder einem BufferedImage ...

Java:
	BufferedImage img = new BufferedImage(width,height,BufferedImage.TYPE_INT_RGB);
	Graphics2D gimg = img.createGraphics();
	// male irgendwas
	gimg.dispose();

Man kann in das "Graphics" eines Objekts ein anderes Objekt reinmalen, z. B. mit ...

Java:
	.drawImage(img,x,y,width,height,null);

... und sich wieder das Graphics von diesem bemalten Objekt holen.

So sollte man "Graphics in Graphics" machen 😉
 

Zurück
Oben