Java Tutorial/2D Graphics/Ellipse
Содержание
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 returnstrue
if they are equal or * bothnull
. * * @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>