Hallo, ich möchte bei einem selbstgeschriebenen Bildbetrachter die Möglichkeit implementieren das angezeigte Bild in 90° schritten nach links oder rechts zu drehen. Habe dazu auch einige Threads gefunden und nun eine Funktion implementiert, die das erledigt. Jedoch schneidet mir diese Funktion beim rotieren einen Rand des Bildes ab.
Hier mal die implementierte Funktion für eine drehung um 90 grad nach links:
Habe das ganze auch schon mithilfe eines Graphics2d-Objektes versucht, jedoch mit dem selben ergebniss, je nachdem in welche richtung ich drehe, fehlt entwerde der linke oder der rechte Rand.
Hoffe mir kann jmd einen denkanstoss in die richtige Richtugn geben.
Hier mal die implementierte Funktion für eine drehung um 90 grad nach links:
Code:
protected void rotiereLinks(){
AffineTransform atf = new AffineTransform();
atf = AffineTransform.getRotateInstance(Math.toRadians(ALPHA_LINKS), //Rotation als Affine Transformation
(getImage().getWidth()/2), //im Winkel -90° um den Bildmittelpunkt
(getImage().getHeight()/2));
AffineTransformOp op = new AffineTransformOp(atf,AffineTransformOp.TYPE_BILINEAR);
BufferedImage tmp = new BufferedImage(getImage().getHeight(), //temporäres Objekt mit vertauschten
getImage().getWidth(), //Seitenverhältnissen
getImage().getType());
tmp = op.filter(getImage(),null); // temporäres Imageobjekt, dem das durch den Filter transformierte
setImage(tmp); // ImageObjekt zugewiesen wird, setzten des neuen Images
repaint(); // und repaint()
}
Habe das ganze auch schon mithilfe eines Graphics2d-Objektes versucht, jedoch mit dem selben ergebniss, je nachdem in welche richtung ich drehe, fehlt entwerde der linke oder der rechte Rand.
Hoffe mir kann jmd einen denkanstoss in die richtige Richtugn geben.