You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

63 lines
1.6 KiB
Java

Affine transformations with images
package com.ack.gui.awt.geometry;
import java.awt.*;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.geom.AffineTransform;
public class AffineTransformationsWithImages extends Frame {
Dimension size = new Dimension( 600, 600 );
Image image;
Point origin = new Point( size.width / 2, size.height / 2 );
AffineTransform tx = new AffineTransform();
float scalingFactor = 1.0f;
public AffineTransformationsWithImages( String title ) {
super( title );
setSize( size );
addWindowListener( new WindowAdapter() {
public void windowClosing( WindowEvent we ) {
dispose();
System.exit( 0 );
}
} );
setVisible( true );
image = Toolkit.getDefaultToolkit().getImage( "3.gif" );
tx.translate( origin.x, origin.y );
for( int x = 0; x < 100; x++ ) {
scalingFactor += 0.0003;
pause( 50 );
tx.scale( scalingFactor, scalingFactor );
tx.rotate( scalingFactor );
repaint();
}
}
public static void main( String[] args ) {
AffineTransformationsWithImages affineTransformationsWithImages1 =
new AffineTransformationsWithImages( "Affine Transformations With Images Example" );
}
public void update( Graphics g ) {
paint( g );
}
public void paint( Graphics g ) {
Graphics2D g2d = (Graphics2D) g;
g2d.drawImage( image, tx, this );
}
private void pause( int mil ) {
try {
Thread.currentThread().sleep( mil );
}
catch( Exception ex ) {
ex.printStackTrace();
}
}
}