Wie "teuer" ist diese Funktion zum drehen eines Image?

Florian Strienz

Erfahrenes Mitglied
Hallo zusammen,

ich benutze folgende Funktion für ein Java-Game mit der ich ein Bild in einem bestimmten Winkel drehe.

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

Das funktioniert alles recht gut. Ich bin mir aber unschlüssig, ob diese Methode nicht sehr viel Performance frist, da ich jedesmal das Bild aufs neue drehe beim Zeichnen. Oder koste das drehen wenig Performance, da das Bild an sich ja schon im Speicher ist und nur dort gedreht wird (ähnlich wie bei directX)?

Hat hier jemand Erfahrung? Alternative wäre 360 Bilder vorab in den Speicher zu malen und dann auf diese zuzugreifen. Bin mir sehr unschlüssig, was hier sinnvoller ist.:confused:
 
Also wie Teuer das drehen des Bildes oder was besser ist, musst du immer selbst herausfinden. Ich wäre für die von dir bereits erwähnte Möglichkeit, Bilder vorher zu drehen und diese im Speicher zu lassen, bis die gebraucht werden.

Aber hier stellt sich auch die Frage, ob man wirklich 360 Bilder braucht. Man könnte z.B. nur eine Drehung um 2 oder 3 Grad erlauben. Damit hätte man schonmal viel gespart. Evtl kann man noch mehr sparen, wenn man die Grafik sieht.
 
Zurück