AffineTransform translate and rotate Example
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));
}
}
}
