package javacodebook.media.graphic.transform;

import java.awt.*;
import java.awt.geom.*;
import javax.swing.*;

/**
 * Ein Beispiel zur Skalierung von Grafikobjekten.
 */
public class ScalingPanel extends javax.swing.JPanel {

    public void paintComponent(Graphics graphics) {
        super.paintComponent(graphics);
        Graphics2D g = (Graphics2D)graphics;
        //Nullpunkt in die Mitte verlegen
        g.translate(getWidth()/2, getHeight()/2);
        //Größe der weiteren Grafik-Ausgaben verändern. Alle x-Koordinaten
        //werden mit 3 multipliziert, alle y-Koordinaten mit 2
        g.scale(3, 2);
        //Das Rechteck wird mit dreifacher Seitenlänge und doppelter Strichstärke
        //gezeichnet!
        g.draw(new Rectangle2D.Double(-25, -25, 50,50));
    }

    public Dimension getPreferredSize() {
        return new Dimension(320,200);
    }

    public static void main(String[] args) {
        JFrame f = new JFrame();
        f.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
        f.getContentPane().setLayout(new BorderLayout());
        f.getContentPane().add(new ScalingPanel());
        f.pack();
        f.show();
    }
}
