Für mein Mini-Spiel-Projekt muss ich nun auch mal ein Bildchen drehen, da sich der Winkel nur selten ändert, möchte ich das nicht in der Render-Funktion machen, sondern beim Setzen des Winkels. Da ganze sieht etwa so aus:
Das Problem ist, das ich nciht weiß, an welcher Position ich ich mImage in das mRotatedImage zeichnen muss, damit es wieder mittig ist (und nicht Teile abgeschnitte werden).
Code:
private static Image mImage; // das OrginalBild
private BufferedImage mRotatedImage; // das gedrehte Bild, das in der Render-Funktion ausgegeben wird
public void setAngle(int pAngle)
{
if(mImage==null) return;
int tWidth = mImage.getWidth(null),
tHeight = mImage.getHeight(null),
tDiagonal = (int)Math.sqrt(tWidth*tWidth + tHeight*tHeight);
mRotatedImage = new BufferedImage(tDiagonal, tDiagonal, BufferedImage.TYPE_INT_ARGB);
Graphics2D tImageG2D = (Graphics2D)mRotatedImage.createGraphics();
AffineTransform tRotation = AffineTransform.getRotateInstance(Math.toRadians((double)mAngle), tWidth>>1, tHeight>>1);
tImageG2D.setTransform(tRotation);
tImageG2D.drawImage(mImage, 0, 0, null);
}
Das Problem ist, das ich nciht weiß, an welcher Position ich ich mImage in das mRotatedImage zeichnen muss, damit es wieder mittig ist (und nicht Teile abgeschnitte werden).