package javacodebook.media.graphic.transform;

import java.awt.*;
import java.awt.geom.*;
import javax.swing.*;

/**
 * Ein Panel, auf dem ein Bild um 45° gedreht dargestellt wird.
 */
public class RotatingImagePanel extends javax.swing.JPanel {
    private Image image;

    public void paintComponent(Graphics graphics) {
        super.paintComponent(graphics);
        Graphics2D g = (Graphics2D)graphics;
        //Nullpunkt in die Mitte verlegen
        g.translate(getWidth()/2, getHeight()/2);
        //Koordinatensystem um 45° im Uhrzeigersinn rotieren
        g.rotate(Math.toRadians(45));
        //Rechtech gedreht zeichnen
        g.drawImage(image, -image.getWidth(this)/2, -image.getHeight(this)/2, this);
    }

    public Dimension getPreferredSize() {
        return new Dimension(640,480);
    }

    public static void main(String[] args) {
        JFrame f = new JFrame();
        f.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
        f.getContentPane().setLayout(new BorderLayout());
        RotatingImagePanel panel = new RotatingImagePanel();
        f.getContentPane().add(panel);
        ImageIcon icon = new ImageIcon(panel.getClass().getClassLoader().
                        getSystemResource("javacodebook/media/graphic/transform"
                        +"/sonnenaufgang.jpg"));
        panel.image = icon.getImage();
        f.pack();
        f.show();
    }
}
