Java Rotation funktioniert nicht richtig

T

T0B3Y

Gast
Hey,

bin grade mal wieder dabei ein wenig mit Java zu programmieren. Jetzt will ich ein Bild so einbinden, dass man es per Tasten bewegen/drehen kann. Für die Drehung verwende ich folgenden Code:

Code:
public void rotateImage(double degrees) {
        AffineTransform affineTransform = AffineTransform.getRotateInstance(
                Math.toRadians(degrees),
                look.getWidth() / 2,
                look.getHeight() / 2);
        BufferedImage rotatedImage = new BufferedImage(look.getWidth(), look.getHeight(), look.getType());
        Graphics2D g = (Graphics2D) rotatedImage.getGraphics();
        g.setTransform(affineTransform);
        g.drawImage(look, 0, 0, null);
        look = rotatedImage;
	}

(look ist das Bild)

Nun wird bei jedem Thread-Durchlauf, bei dem die eine der Pfeiltasten um 2 Grad (Je nach Einstellung) gedreht.
Wenn ich schon direkt nach dem Programmstart, also schon bevor das erste mal das Bild gerendert wird, das Bild drehe, wird es richtig angezeigt. Wenn ich jedoch im Programm selbst dann die Pfeiltasten drücke, bewegen sich jedoch immer nur die äußersten 3 Pixel in die entsprechende Richtung, der gesammte innere Teil des Bildes bleibt gleich. An diesem Problem häng ich jett schon ziemlich lang, kenn mich aber mit diesem Bereich auch noch nicht so gut aus, weshalb ich jetzt einfach mal nach Hilfe frag. Wenn jemand ne Ahnung hat, oder bestimmter Code zusätzlich benötigt wird, einfach schreiben.

PS: Sorry für den eher schlechten Programmierstil und die wahrscheinlich bescheuerte Frage.

MfG
 
Wenn der Code angeblich funktioniert, wird es wohl an einem fehlenden paint-Befehl liegen, der die Komponente mit dem manipulierten Bild neu zeichnet.
 
problem.png

Ich glaub ich hab mich gestern ein wenig undeutlich ausgedrückt. ganz links sieht man, was passiert, wenn man das Bild Im Programm dreht. In der Mitte, was passiert, wenn man das Bild schon vor dem ersten anzeigen dreht (= Wie es eigentlich auch im ersten Fall sein soll) und rechts die ganz normale, ungedrehte Grafik.
 
Ich denke mal das Problem kommt daher, dass du immer mit dem gedrehten Bild arbeitest. Durch die Drehung gehen Bildinformationen verloren, bis es irgendwann so aussieht, wie es aussieht.

Merke dir stattdessen, um wie viel Grad das Bild gedreht werden soll und dann drehst du immer das Originalbild.
 
Es funktioniert :D :D :D Danke, darauf muss man erstmal kommen. Wobei ich mir schon gedacht hab, das es irgendwie daran liegt das es so oft berechnet und so des Bild verwuselt.

MfG
 
Zurück
Oben