Java Tutorial/2D Graphics/Ellipse

Материал из Java эксперт
Перейти к: навигация, поиск

Compares two ellipses and returns true if they are equal or both null.

   <source lang="java">

import java.awt.geom.Ellipse2D; public class Main {

 /**
  * Compares two ellipses and returns true if they are equal or
  * both null.
  *
  * @param e1  the first ellipse (null permitted).
  * @param e2  the second ellipse (null permitted).
  *
  * @return A boolean.
  */
 public static boolean equal(final Ellipse2D e1, final Ellipse2D e2) {
     if (e1 == null) {
         return (e2 == null);
     }
     if (e2 == null) {
         return false;
     }
     if (!e1.getFrame().equals(e2.getFrame())) {
         return false;
     }
     return true;
 }

}</source>





Create an complex shape by rotating an ellipse.

   <source lang="java">

import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.geom.AffineTransform; import java.awt.geom.Ellipse2D; import javax.swing.JFrame; import javax.swing.JPanel; public class RotateTransformed extends JPanel {

 public void paint(Graphics g) {
   Graphics2D g2 = (Graphics2D) g;
   Ellipse2D e = new Ellipse2D.Double(0, 0, 80, 130);
   for (double i = 0; i < 360; i += 5) {
     AffineTransform at = AffineTransform.getTranslateInstance(400 / 2, 400 / 2);
     at.rotate(Math.toRadians(i));
     g2.draw(at.createTransformedShape(e));
   }
 }
 public static void main(String[] args) {
   JFrame frame = new JFrame();
   frame.add(new RotateTransformed());
   frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
   frame.setSize(400, 400);
   frame.setVisible(true);
 }

}</source>





Create an ellipse, and then draws it several times at different rotations

   <source lang="java">

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);
     }
   }
 }

}</source>





Draw Ellipse2D.Float

   <source lang="java">

import java.awt.Color; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.geom.Ellipse2D; import javax.swing.JFrame; import javax.swing.JPanel; public class MainClass extends JFrame {

 public MainClass() {
   getContentPane().add(new DrawingCanvas());
   setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
   setSize(500, 500);
   setVisible(true);
 }
 public static void main(String arg[]) {
   new MainClass();
 }

} class DrawingCanvas extends JPanel {

 DrawingCanvas() {
   setSize(300, 300);
   setBackground(Color.white);
 }
 public void paint(Graphics g) {
   Graphics2D g2D = (Graphics2D) g;
   Graphics2D g2 = (Graphics2D) g;
   int w = getSize().width;
   int h = getSize().height;
   Ellipse2D e = new Ellipse2D.Float(w / 4.0f, h / 4.0f, w / 2.0f, h / 2.0f);
   g2.setClip(e);
   g2.setColor(Color.red);
   g2.fillRect(0, 0, w, h);
 }

}</source>