Academic Java    Java Tutorial  >  Graphics  >  AffineTransform translate and rotate

AffineTransform translate and rotate Example

Java AffineTransform translate and rotate EXAMPLE output This applet shows an AffineTransform that combines two transforms, a translation and a rotation.

The combined transform is then applied to an ellipse to create the transformed shape.

An arbitrary number of transforms can be combined in this way.
// AffineTransform example rotating and transforming shape
import java.awt.*;
import java.awt.geom.*;
import javax.swing.*;

class AffineTransformExample2 extends JApplet {

   @Override public void paint(Graphics g) {
      super.paint(g);
      Graphics2D g2 = (Graphics2D)g;
      g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
            RenderingHints.VALUE_ANTIALIAS_ON);
      g2.setStroke(new BasicStroke(3));

      int w=300,h=300;
      float ew = w/4;
      float eh = h-h/10;

      Ellipse2D ellipse = new Ellipse2D.Float(-ew/2, -eh/2, ew, eh);

      for (double angle = 0; angle < 180; angle+=60) {
         AffineTransform at = AffineTransform.getTranslateInstance(w/2, h/2);
         at.rotate(Math.toRadians(angle));
         g2.draw(at.createTransformedShape(ellipse));
      }
      g2.setPaint(Color.pink);
      w = 150; h = 150; ew = w/4; eh = h-h/10;
      ellipse = new Ellipse2D.Float(-ew/2, -eh/2, ew, eh);
      for (double angle = 0; angle < 180; angle+=30) {
         AffineTransform at = AffineTransform.getTranslateInstance(w, h);
         at.rotate(Math.toRadians(angle));
         g2.draw(at.createTransformedShape(ellipse));
      }
   }
}


* AffineTransform Examples