Grafik rotieren

Maxim6394

Bekanntes Mitglied
ich versuche hier die ganze zeit eine einfache grafik zu rotieren.
hier der code:

Code:
public void paint(Graphics g)
	{
		Graphics2D g2=(Graphics2D)g;
		img=getToolkit().getImage("C:\\projekte\\project2\\src\\pfeil.gif");	
	
		
		g2.rotate(90,82,82);
	
		g2.drawImage(img,50,50,this);
	}
egal was ich mache, es wird nie so rotiert wie es soll. es ist immer irgendwie schräg, aber nicht 90° wie ich es bei rotate angegeben hab. die grafik ist 64 pixel breit und hoch.
kann mir jemand erklären wie es geht?
 

Marco13

Top Contributor
Nebenbei: Das Bild bei jedem neuzeichnen neu zu laden ist :autsch: Man sollte es einmal im Konstruktor laden, und in der paint-Methode möglichst NUR zeichnen.
 

Maxim6394

Bekanntes Mitglied
ich verstehs immernoch nicht. was für ein bogenmaß soll ich wo benutzen? ich hab da nur eine grafik deren höhe und breite ich kenne.
 

Maxim6394

Bekanntes Mitglied
hab grad rausgefunden dass man mit Math.toRadians() es einfach von grad in bogenmaß umrechnen kann, damit funktioniert es dann endlich wie es soll.
 

Maxim6394

Bekanntes Mitglied
noch ein kleines Problem:
ich hab 2 oder mehr verschiedene bilder die ich auf dem JPanel darstellen will. irgendwie klappt es aber nicht so richtig beide einzelnd zu rotieren.
das eine rotiert das andere immer mit, obwohl ich für jedes der beiden bilder ein anderes Graphics2D objekt erstellt hab.

in einer for schleife hab ich zuerst das:
Code:
Graphics2D missile=(Graphics2D)g;
		missile m=(missile)ms.get(i);	
		missile.rotate(Math.toRadians(playerRotation),m.getX(),m.getY());
 		missile.drawImage(m.getImg(),m.getX(),m.getY(),null);

die rotation funktioniert schonmal.
danach wird noch das andere bild gezeichnet:

Code:
 Graphics2D g2d2=(Graphics2D)g;
	g2d2.rotate(Math.toRadians(playerRotation),p.getX()+p.getBounds().width/2,p.getY()+p.getBounds().height/2);

	g2d2.drawImage(p.getImg(),p.getX(),p.getY(),null);

das zweite wird also durch den rotationsbefehl vom ersten bild mit rotiert.
wie kann man das lösen?
 

Runtime

Top Contributor
Mit '=' wird bei Objekten nur die Referenz, aber nicht das Objekt selber editiert, was heisst, du hast 3 Referenzen (g, missile, g2d2),
die alle auf das selbe Objekt verweisen. Die Transformation zurücksetzen kannst du soviel ich weiss mit
Code:
missile.setTransform(new Affine Transform());
 

Marco13

Top Contributor
Die Transformation zurücksetzen kannst du soviel ich weiss mit ...

Nein... Siehe die Doku dazu. Die setTransform ist NUR um eine vorher gespeicherte Transform wiederherzustellen.

Um die Dinger einzeln zu drehen, kann man entweder die Transform speichern und später wieder herstellen, oder neue Graphics-Objekte verwenden, also grob entweder
Java:
AffineTransform original = g.getTransform();
g.rotate(...);
g.drawImage(firstImage...);
g.setTransform(original);
g.rotate(...);
g.drawImage(secondImage...);
g.setTransform(original);
oder
Java:
Graphics2D temp0 = g.create();
temp0.rotate(...);
temp0.drawImage(firstImage...);
temp0.dispose();

Graphics2D temp1 = g.create();
temp1.rotate(...);
temp1.drawImage(secondImage...);
temp1.dispose();

Was "besser" ist, hängt auch davon ab, was dort noch alles gemacht wird. Für einfaches Rotieren würde es wohl das erste tun.
 

Maxim6394

Bekanntes Mitglied
es besteht trotzdem noch das problem dass ich nicht schaffe die geschosse von der figur korrekt zu rotieren.
da ist eine arraylist wo alle geschosse gespeichert werden sobald space gedrückt wird. sie werden immer in eine der vier himmelsrichtungen norden, osten, süden und western abgeschossen. die richtung wird dabei beim erstellen eines missile objekts per string übergeben.
das abfeuern der dinger funktioniert soweit gut, das einzige was noch fehlt ist die korrekte rotation. sie sollen entweder um 0,90,180 oder -90 grad rotiert werden. jemand ne idee?
 

Maxim6394

Bekanntes Mitglied
ich hab die methode hier veruscht, die ich irgendwo gefunden hab:
Code:
	 public static BufferedImage rotateImage(BufferedImage src, double degrees) {
	        AffineTransform affineTransform = AffineTransform.getRotateInstance(
	                Math.toRadians(degrees),
	                src.getWidth() / 2,
	                src.getHeight() / 2);
	        BufferedImage rotatedImage = new BufferedImage(src.getWidth(), src
	                .getHeight(), src.getType());
	        Graphics2D g = (Graphics2D) rotatedImage.getGraphics();
	        g.setTransform(affineTransform);
	        g.drawImage(src, 0, 0, null);
	        return rotatedImage;
	    }

die höhe des bildes ist 8,wie es auch korrekt ausgegeben wird. trotzdem seh ich bei jedem ausgegeben bild nicht mehr als einen pixel.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
fragenÜber(fragen); Turtle Grafik mit GUI (JFrame) Java Basics - Anfänger-Themen 3
D Grafik auf ein JPane ausgeben. Java Basics - Anfänger-Themen 6
J Konstruktoren und Grafik Java Basics - Anfänger-Themen 3
J "Tetris" - Problem bei der Grafik Java Basics - Anfänger-Themen 5
R Grafik in CSV einbinden Java Basics - Anfänger-Themen 2
S Suche aktuelles 2D Grafik Tutorial Java Basics - Anfänger-Themen 5
B Java -Turtle Grafik - kennt sich jemand damit aus? Java Basics - Anfänger-Themen 1
S Erste Schritte 2D Grafik Probleme mit KeyListener. Java Basics - Anfänger-Themen 18
D aufbauende Grafik Java Basics - Anfänger-Themen 13
8 Grafik erstellen Java Basics - Anfänger-Themen 6
Z Jump and Run - Grafik,Logik und GUI trennen Java Basics - Anfänger-Themen 4
G Bei Mouseover Grafik ändern, gutes Vorgehen gesucht Java Basics - Anfänger-Themen 0
V jab ich eclipse verrückt gemacht :D ? array Jpanel, Jlabel Grafik Fehler / Frage Java Basics - Anfänger-Themen 5
L Grafik Kollision Detektierung Java Basics - Anfänger-Themen 4
L OOP Grafik in Circle Objekt füllen Java Basics - Anfänger-Themen 3
S Grafik löschen Java Basics - Anfänger-Themen 10
C Grafik einsperren Java Basics - Anfänger-Themen 2
E Quelltext für Grafik verschwindet Java Basics - Anfänger-Themen 9
S Grafik verschwindet Java Basics - Anfänger-Themen 8
O Java Grafik-Programmierung? Java Basics - Anfänger-Themen 16
R 2D Grafik zeichnen Java Basics - Anfänger-Themen 4
B Grafik zeichnen Java Basics - Anfänger-Themen 25
S Teilstücke aus einer Grafik extrahieren Java Basics - Anfänger-Themen 2
S Probleme mit JMenü und Grafik Java Basics - Anfänger-Themen 2
0 Grafik eine bestimmte Strecke laufen lassen Java Basics - Anfänger-Themen 6
R Hilfe bei erster Grafik Java Basics - Anfänger-Themen 2
A Gui Grafik Java Basics - Anfänger-Themen 4
maddin86 Grafik in .jar einbetten Java Basics - Anfänger-Themen 3
M import einer Grafik aus .jar funktioniert nicht Java Basics - Anfänger-Themen 6
M Grafik export in ein Jar File Java Basics - Anfänger-Themen 5
O Grafik in Frame laden Java Basics - Anfänger-Themen 9
H Diverse Dinge: Unstabile Grafik, Druckt Grafik nicht,Tooltipp verschwindet hinter Grafik Java Basics - Anfänger-Themen 3
H Grafik auf einem JPanel bewegen. Java Basics - Anfänger-Themen 7
F JLabel mit Grafik füllen Java Basics - Anfänger-Themen 3
K Grafik vergrößern/verkleinern Java Basics - Anfänger-Themen 3
F Zugriffsproblem - Funktion von Grafik trennen Java Basics - Anfänger-Themen 6
H HtmlUnit - Grafik speichern Java Basics - Anfänger-Themen 2
R Taste gedrückt = Grafik zeichen ?!? Java Basics - Anfänger-Themen 8
D PNG-Grafik erzeugen Java Basics - Anfänger-Themen 8
A Grafik erstellen und in Frame einfügen Java Basics - Anfänger-Themen 17
T Drucken von Listen bestehend aus Grafik und Text (unter swing) Java Basics - Anfänger-Themen 7
A grafik 2d Objekte mit der Maus bewegen Java Basics - Anfänger-Themen 4
A Grafik 2d Objekte farblich ausfüllen Java Basics - Anfänger-Themen 15
C Grafik einbinden Java Basics - Anfänger-Themen 11
F Größe von Grafik-Containern verschieben Java Basics - Anfänger-Themen 2
J Unterschied zwischen 2 Grafik Methoden Java Basics - Anfänger-Themen 2
M Grafik neuzeichnen Java Basics - Anfänger-Themen 8
M Grafik als Resource laden? Java Basics - Anfänger-Themen 2
G erste Schritte in Fenster und Grafik-Programmierung Java Basics - Anfänger-Themen 2
$ Inhalt von JPanel als Grafik? Java Basics - Anfänger-Themen 2
K Grafik beim JFrame oben Links ändern nur wie ? Java Basics - Anfänger-Themen 8
J Grafik Java Basics - Anfänger-Themen 3
K Grafik abspeichern, X11 Fehlermeldung Java Basics - Anfänger-Themen 15
T Zeigerposition auf Grafik messen? Java Basics - Anfänger-Themen 5
M ausm String eine Grafik erstellen Java Basics - Anfänger-Themen 4
F Grafik auf Button passt nicht Java Basics - Anfänger-Themen 1
E Grafik in bestimmtes frame einbinden . Java Basics - Anfänger-Themen 13
F Teilen einer großen Grafik Java Basics - Anfänger-Themen 2
M Grafik erstellen Java Basics - Anfänger-Themen 8
C Clear im Grafik Editor Java Basics - Anfänger-Themen 16
C Grafik flimmert bzw. flackert bei Bewegung Java Basics - Anfänger-Themen 11
N Grafik formatieren Java Basics - Anfänger-Themen 7
E fehlermeldung bei rekursiver grafik Java Basics - Anfänger-Themen 11
M wie kombiniere ich grafik und swing-komponenten Java Basics - Anfänger-Themen 16
N Java Problem bei Grafik und OoP Java Basics - Anfänger-Themen 7
V Grafik ist nur ganz kurz sichtbar Java Basics - Anfänger-Themen 3
H Streichholzziehen - Grafik? Java Basics - Anfänger-Themen 3
M Grafik auf einem JPanel erneut darstellen Java Basics - Anfänger-Themen 3
S Grafik verschwindet aus JTabbedPane Java Basics - Anfänger-Themen 4
C Grafik in einem Panel als Bild exportieren Java Basics - Anfänger-Themen 8
CptK Interface Bild rotieren Java Basics - Anfänger-Themen 17
CptK Interface Bild rotieren Java Basics - Anfänger-Themen 1
S Array rotieren..? Java Basics - Anfänger-Themen 10
H immutabler AVLBaum rotieren Java Basics - Anfänger-Themen 8
S Image nach MausMotion rotieren Java Basics - Anfänger-Themen 7
S Bild auf eine Position rotieren?! Java Basics - Anfänger-Themen 4
H ImageIcon rotieren Java Basics - Anfänger-Themen 4
S HEX oder String rotieren lassen (rechts raus, links rein) Java Basics - Anfänger-Themen 3
E java.lang.OutOfMemoryError beim Rotieren eines Images Java Basics - Anfänger-Themen 14

Ähnliche Java Themen

Neue Themen


Oben