stupid-Question: graphics2D auf anderes Graphics 2D malen....

Orbit

Erfahrenes Mitglied
Moin,
Ich bin irgendwqie zu dumm, um nen Befehl zu finden der es mir erlaubt ein Graphics 2D object auf ein anderes zu malen, sodass es eben nur ne bestimmte Fläche "übermalt"...
Sprich ich brauch sowas wie g2d.draw(g2d2, position x, position y, sizex, sizey);
geht sowas?
Kann man das umgehen?
Ich brauch nämlich den graphics, dass aus vielen kleinen teilen, die alle verschieden zu skalieren sind und alle verschieden gedreht sind zusammengesetzt ist.
Aber mit
Code:
		AffineTransform trans = new AffineTransform();
		trans.rotate(0.1);
kann ich ja nur das gesammte Objekt drehen, und nicht einzelne Teile (zB eine Linie).
Daher muss ich diese Linie zuerst auf nen eigenes g2fd packen, das drehen und dann mit dbestimmter position auf ein anderes lehgen (odfer wie geht das)?
mfg,
Orbit

PS: nicht hauen, weil die Frage so dumm ist...
 
Hallo Orbit,

kannst du dein Vorhaben etwas genauer beschreiben !

Ein Graphics2D auf ein anderes malen, geht so meines Wissens nicht !

Es sei denn du meinst dies im Zusammenhang mit Image-Objekten !

Quasi OffScreenImages ! Da du von solchen ebenfalls ein Graphics-Objekt
bekommen kannst ! SOo das du in das Image malen und dieses dann wiederum
wo anders reinmalen kannst !

Trifft es das in etwa ? ?

Gruß JAdix
 
Moin, danke für deine Antwort!
Also ich hab eben dass problem dass ich nen Graphics2D bemale, mit versch. Formen die jeweils andere skalierung und Rotation haben.
Kann man nen Image-Objekt erstellen, dass drehen+bemalen und dann den Inhalt auf das g2d objekt legen?
Mfg,
Orbit
 
Und nochmal Moin, Moin.

Nicht schön, dafür aber häßlich und direkt hier anzuschauen !

Ein mit heißer Nadel gestrickter Beispiel-Code !

Code:
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.geom.AffineTransform;
import java.awt.image.BufferedImage;
import javax.swing.JFrame;

public class J2Dtest extends JFrame {

	BufferedImage img1,img2;
	
	public J2Dtest() {
	
		this.setDefaultCloseOperation(EXIT_ON_CLOSE);
		this.setBounds(10,10,300,300);
		this.setTitle("J2D Test");
		this.setVisible(true);
		
		img1 = (BufferedImage)this.createImage(200,200);
		Graphics2D gra1 = (Graphics2D) img1.getGraphics();
		gra1.setColor(Color.RED);

		img2 = (BufferedImage)this.createImage(200,200);
		Graphics2D gra2 = (Graphics2D) img2.getGraphics();
		gra2.setColor(Color.BLUE);

		gra2.fillArc(100,100,80,80,122,233);
		gra2.drawLine(25,25,200,200);
		
		AffineTransform at = AffineTransform.getScaleInstance(0.75,0.75);
		at.rotate(0.3*Math.PI,100,100);
				
		gra1.drawImage(img2,at,null);
		gra1.drawLine(75,25,25,75);
		
		repaint();
	}
	
	public static void main(String[] args) {
		
		new J2Dtest();
		
	}
		
	public void paint(Graphics g) {
		
		g.drawLine(150,0,150,300);
		
		if (img1!=null) { 
			AffineTransform at = AffineTransform.getScaleInstance(1.2,0.8);
			at.rotate(-0.2*Math.PI,100,100);
			at.translate(30.0,80.0);
			Graphics2D g2d = (Graphics2D)g;
			g2d.drawImage(img1,at,null);
		}

		g.drawLine(0,150,300,150);
	}
}

Gruß JAdix
 
dass es hässlich ist macht mir nix aus;-)
Vielen Dank, ich denke ich werds so machen!
Mfg,
Orbit
 
Zurück