Grafikobjekt drehen

GideFix

Mitglied
Halle ich schätze dieses oder ein ähnliches Thema wurde schon erstellt aber ich habs mit der Suche nicht gefunden :S

Wie dreht man in Java ein einfache Grafikobjekt wie zum Beispiel ein Rechteckt?!

Danke schonmal im voraus!
 
ich versteh nicht auf was diese methoden angewendet werden sollen :S
könnten ihr vll ne beispiel methode schreiben, die einfach ein quader um 45 grad dreht?

Das Problem ist halt, dass ich diese komsiche graphics2d klasse nicht verstehe, da wir sowas in der schule nie behandelt haben...
 
Tut mir leid jetzt mehr infos :
Also...
Bisher haben wir in der schule ungefähr so gemalt:
Wir haben einfach ein graphics Objekt genommen und dann sowas wie dieses in die paint methode gemach:

public void paint (Graphics stift){
sitft.drawrect (100,100,200,200)}

Jetzt haben wir vom Lehrer die Aufgabe bekomme ein gemaltes polygon um einen bestimmten Winkel zu drehen.
Ich habe allerdings keine Ahnung wo ich anfangen soll...
Ich hoffe ihr könnt mir helfen :S
 
Anfangen solltest du im Lesen von dem o.g. Link 🙂
Denn dort ist alles beschrieben.
Sagen wir du hast ein Polygon -> ein einfaches Rechteck:
Java:
private Polygon s = new Polygon(new int[]{0,100,100,0}, new int[]{0, 0, 100, 100}, 4);
dieses willst du nun in deiner paint(Component) drehen und evtl. vorher verschieben, dann erstellst du ein AffineTransform-Objekt und rufst dort eben dann die Methode rotate oder translate auf und setzt anschließend dieses Objekt mit setTransform an dem Graphics-Objekt. Vorher evtl. die aktuelle Transformation speichern, indem du dir diese mit getTransform holst!
Da die setTransform Methode nicht in der abstrakten Klasse Graphics bereit steht, musst du das Graphics-Objekt zuvor auf Graphics2D casten.
Hier noch einmal ein minimales Beispiel, das evlt. übersichtlicher ist als das Verlinkte
Java:
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Polygon;
import java.awt.geom.AffineTransform;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;

public class TransformDemo {
	
	private Polygon s = new Polygon(new int[]{0,100,100,0}, new int[]{0, 0, 100, 100}, 4);

	public TransformDemo(){
		JFrame frame = new JFrame();
		JPanel panel = new JPanel(){
			@Override
			protected void paintComponent(Graphics g) {
				super.paintComponent(g);
				g.fillPolygon(s);
				//demo:
				g.setColor(Color.RED);
				g.drawString("hallo", 10, 10);
				Graphics2D g2d = (Graphics2D) g;
				AffineTransform at = new AffineTransform();
				at.translate(100, 0); //verschiebe auf x achse um 100
				at.rotate(Math.toRadians(45)); //rotiere um 45 grad
				g2d.setTransform(at); // <---
				g.fillPolygon(s);
				g.setColor(Color.BLACK);
				g.drawString("hallo", 10, 10);
			}
		};
		frame.add(panel);
		frame.setSize(200, 200);
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		frame.setLocationRelativeTo(null);
		frame.setVisible(true);
	}

	public static void main(String[] args) {
		SwingUtilities.invokeLater(new Runnable() {
			public void run() {
				new TransformDemo();
			}
		});
	}
}
 

Neue Themen


Zurück
Oben