java - 如何创建 Ellipse2D 数组?

标签 java graphics draw shapes

我有一个我一直在使用的程序:它从用户那里获取数据,用它做一些数学运算,然后在屏幕上显示一个椭圆,当输入新数据时,旧的椭圆消失,新的椭圆取而代之。但是我需要程序在屏幕上保留旧椭圆和新椭圆,这样我就可以比较大小。我的解决方案是让它在创建椭圆时存储在一个数组中,然后将椭圆数组绘制到屏幕上,我还需要它以便用户可以清除数组并重新开始。但是我无法让代码工作。你能帮忙吗?

下面是我用来创建和绘制椭圆的代码,所有使用的变量都只是数字。

public void paint(Graphics g) {
    super.paint(g);
    Graphics2D g2 = (Graphics2D) g;
    g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
            RenderingHints.VALUE_ANTIALIAS_ON);
    g2.setPaint(Color.white);
   g2.draw(new Ellipse2D.Double(((Background.getWidth()) / 2) - (gblSemiMajaxis / 2), ((Background.getHeight()) / 2) - (gblsemiMinoraxis / 2), gblSemiMajaxis, gblsemiMinoraxis));
}

最佳答案

只是为了扩展 Ian McLarid 的回答:

// imports
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.RenderingHints;
import java.awt.geom.Ellipse2D;
import java.util.ArrayList;

...

ArrayList<Ellipse2D> ellipseList = new ArrayList<Ellipse2D>();

public void createEllipse(double gblSemiMajaxis, double gblSemiMinoraxis) {
    Ellipse2D e = new Ellipse2D.Double(((Background.getWidth()) / 2) - (gblSemiMajaxis / 2), ((Background.getHeight()) / 2) - (gblSemiMinoraxis / 2), gblSemiMajaxis, gblSemiMinoraxis);
    ellipseList.add(e);
}

public void paint(Graphics g) {
    super.paint(g);
    Graphics2D g2 = (Graphics2D) g;
    g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
            RenderingHints.VALUE_ANTIALIAS_ON);
    g2.setPaint(Color.white);

    for (Ellipse2D e : ellipseList) {
        g2.draw(e);
    }
}

关于java - 如何创建 Ellipse2D 数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6724972/

相关文章:

java - 如何在Rhino中检查一个对象是否是JavaScript对象

java - 从java小程序获取正确的本地IP地址

java - 将sql查询结果映射到DTO对象(具有内部列表)

c++ - 模板缓冲区和模板测试

r - 如何在R中绘制标准正态分布

java - 如何将音乐添加到 JFrame?

java - 从 Graphics2D (JAVA) 获取 awt.Image 数据

android - 协调从org.opencv.core.Point到android.graphics.Point的转换

ios - swift中uiview的定位层

image - 更改单个像素的颜色 - Golang 图像