Codigo matricez
import java.awt.geom.AffineTransform;
import javax.swing.*;
import javax.swing.border.Border;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;public class Transformaciones extends JApplet {
private int height = 600;
private int width = 600;
private Image imagenTux;
private PanelImagen panelImagen;
privatePanelBotones panelBotones;
private AffineTransform trans = new AffineTransform();
private double rotacion = 0;
private double escala = 1;
private double shearX = 0;
private doubleshearY = 0;
@Override
public void init() {
imagenTux = getImage(getCodeBase(), "tux.png");
setLayout(new BorderLayout());
panelImagen = new PanelImagen();panelBotones = new PanelBotones();
add(BorderLayout.CENTER, panelImagen);
add(BorderLayout.SOUTH, panelBotones);
}
class PanelImagen extends JPanel {public PanelImagen() {
setDoubleBuffered(true);
setSize(width, height);
}
@Override
public void paint(Graphics g) {Graphics2D g2d = (Graphics2D) g;
//Indicamos el renderizado con interpolation bilinear
// para mejorar la calidad del escalado.g2d.setRenderingHint(RenderingHints.KEY_INTERPOLATION,
RenderingHints.VALUE_INTERPOLATION_BILINEAR);
g2d.setColor(Color.white);
g2d.fillRect(0, 0, height, width);
//Latransformación vuelve a la matriz identidad
trans.setToIdentity();
//Centramos la imagen en el lienzo.
trans.translate(height / 2 - imagenTux.getWidth(this) / 2 * escala,width / 2 - imagenTux.getWidth(this) / 2 * escala);
trans.scale(escala, escala);
//Indicamos la rotación con centro en el centro de la...
Regístrate para leer el documento completo.