📜  Java AWT |椭圆二维(1)

📅  最后修改于: 2023-12-03 15:31:28.863000             🧑  作者: Mango

Java AWT | 椭圆二维

椭圆定义

在二维平面上,椭圆是由一点(F) 和两条互相垂直的直径(D1 和 D2) 所组成的图形。

F 点称为椭圆的焦点,D1 和 D2 称为椭圆的主轴,其中包含 F 点的主轴称为椭圆的长轴,不包含 F 点的主轴称为短轴。

椭圆的形状由长轴长度 a 和短轴长度 b 决定。椭圆的离心率为:

e = sqrt(1 - (b / a) ^ 2)

Java AWT 中的椭圆类

Java AWT(Abstract Window Toolkit)提供了许多绘制图形的类和方法。

Java 中的椭圆类是 Ellipse2D,该类是 java.awt.geom 包中的一员。

创建 Ellipse2D

以下代码展示了如何创建一个 Ellipse2D 对象:

Ellipse2D.Double ellipse = new Ellipse2D.Double(x, y, width, height);

其中,x 和 y 表示椭圆的左上角坐标,width 和 height 表示椭圆的宽和高。

绘制 Ellipse2D

在 Java AWT 中,可以通过 Graphics2D 类来绘制 Ellipse2D。

以下代码展示了如何在画布上绘制一个椭圆:

Graphics2D g2 = (Graphics2D) g;
Ellipse2D ellipse = new Ellipse2D.Double(x, y, width, height);
g2.draw(ellipse);

其中,g 为 Graphics 对象。

填充 Ellipse2D

使用 Graphics2D 的 fill 方法可以填充 Ellipse2D。

以下代码展示了如何在画布上填充一个椭圆:

Graphics2D g2 = (Graphics2D) g;
Ellipse2D ellipse = new Ellipse2D.Double(x, y, width, height);
g2.fill(ellipse);
示例代码
import java.awt.*;
import javax.swing.*;

public class EllipseDemo extends JFrame {
    public EllipseDemo() {
        super("Java AWT | 椭圆二维");

        setSize(400, 400);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setLocationRelativeTo(null);
        setVisible(true);
    }

    public void paint(Graphics g) {
        Graphics2D g2 = (Graphics2D) g;
        g2.setColor(Color.RED);
        Ellipse2D ellipse = new Ellipse2D.Double(50, 50, 200, 100);
        g2.draw(ellipse);

        g2.setColor(Color.BLUE);
        Ellipse2D ellipse2 = new Ellipse2D.Double(100, 100, 100, 200);
        g2.fill(ellipse2);
    }

    public static void main(String[] args) {
        new EllipseDemo();
    }
}

以上代码展示了如何在 Java AWT 中使用 Ellipse2D 类创建和绘制椭圆,以及如何填充椭圆。