Java Graphics How to - Rotate coordinates








Question

We would like to know how to rotate coordinates.

Answer

/*from  w  w w.ja  va  2 s  .  co m*/


import java.awt.BasicStroke;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Shape;
import java.awt.geom.Ellipse2D;

import javax.swing.JComponent;
import javax.swing.JFrame;

public class RotateStrokeEllipse extends JFrame {
  public static void main(String[] args) {
    new RotateStrokeEllipse();
  }

  public RotateStrokeEllipse() {
    this.setSize(300, 300);
    this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    this.add(new PaintSurface(), BorderLayout.CENTER);
    this.setVisible(true);
  }

  private class PaintSurface extends JComponent {
    public PaintSurface() {
    }

    public void paint(Graphics g) {
      Graphics2D g2 = (Graphics2D) g;
      int x = 50;
      int y = 75;
      int width = 200;
      int height = 100;
      Shape r1 = new Ellipse2D.Float(x, y, width, height);
      for (int angle = 0; angle <= 360; angle += 45) {
        g2.rotate(Math.toRadians(angle), x + width / 2, y + height / 2);
        g2.setPaint(Color.YELLOW);
        g2.fill(r1);
        g2.setStroke(new BasicStroke(4));
        g2.setPaint(Color.BLACK);
        g2.draw(r1);
      }
    }
  }
}