# Bilder drehen



## Krondor (24. Aug 2005)

Hi und hallo,

ich bin zur Zeit ein kleines Ballerspielchen im Stil von "Alien Breed" am programmieren
und wollte nun die Spielfigur einbauen. Ich habe auch schon einige Dinge eingebaut, z.B.
die Bewegungen und Animationen etc. , jedoch wollte ich nicht für jede Richtung in
die meine Spielfigur guckt eigene Bilder erstellen. Ich kam also zu dem Entschluß
das Bild einfach mit Java zu drehen, jedoch weiß ich leider nicht wie.

Gibt es Methoden, um ein Image beispielsweise um 90 Grad gedreht darzustellen?

Wäre super, wenn ihr mir helfen könntet.

MfG,
Krondor


----------



## Sky (24. Aug 2005)

rotate


----------



## 0xdeadbeef (24. Aug 2005)

Etwas ausführlicher:
Wenn man Images drehen will, kann man das natürlich auch machen, in dem man sich ein Graphics2D-Objekt erzeugt (createGraphics) und rotate(x) aufruft. Intern läuft aber eine affine Transformation ab und ich denke mal, es ist vermutlich schneller, die direkt zu benutzen. Das hat auch den Vorteil, daß man beispielsweise die Art der Interpolation einstellen kann.
Hier mal ein (nicht getestetes) Beispiel, um eine um 30° gedrehte Version des Images "baseImage" in das Image "rotatedImage" zu bekommen:


```
BufferedImage baseImage;
				...
				// load baseImage;
				...
				// create rotated instance
				double angle = 0.5236; // 30°
				AffineTransform tx = AffineTransform.getRotateInstance(angle);
				AffineTransformOp op = new AffineTransformOp(tx, AffineTransformOp.TYPE_BILINEAR);	
				BufferedImage rotatedImage = op.filter(baseImage, null);
```

Nebenbei bemerkt sollte man im genannten Fall die 8 Richtungen vor der eigentlichen Spielsituation erzeugen und nicht zur Laufzeit drehen.
Eine Rotation zur Laufzeit lohnt sich eigentlich nur, wenn man sehr viele Winkel braucht (z.B. Thrust-Klon).


----------



## Krondor (25. Aug 2005)

Super! Danke!

Ihr habt mir schon sehr geholfen.
Es funktioniert eigentlich sehr gut, ich musste nur noch beim Filtern 
die Mittelpunkt-Koordinaten des Bildes angeben.


```
AffineTransform tx = AffineTransform.getRotateInstance(angle,image.getWidth()/2,image.getHeight()/2);
```

MfG
Krondor


----------



## Gast (4. Sep 2005)

bleiben da bei gifs die unsichbaren farben auch unsichtbar?
gez olli


----------



## Guest (5. Sep 2005)

Ja!


*Huch das war aber kurz*
Aber die Transparenten bleiben erhalten.


mfg GagamehlO


----------

