gpt4 book ai didi

java - 使用 float/double 值制作椭圆形/矩形

转载 作者:行者123 更新时间:2023-11-30 09:24:29 24 4
gpt4 key购买 nike

准确地说,我想使用 float 或 double 值绘制图形。

我使用:

g.drawOval(0, 0, 10, 10);

要画一个圆圈,但我只能使用整数值。

是否有任何语句使用 float/double 值来做同样的事情?

这是一张图片:Problem

圆圈必须居中,而我不能。有什么解决办法吗?

代码:

import java.awt.Color;
import java.awt.Graphics;
import java.util.Random;
import javax.swing.JPanel;

public class Bulls_EYE extends JPanel
{
int red, green, blue;
int height, width;
int heightOval = 475, widthOval = 475;
Random rValue = new Random();

public void paint (Graphics g)
{
super.paint(g);

for (int idx = 0; idx < 100; idx++)
{
g.setColor(new Color(red = 1 + rValue.nextInt(255), green = 1 + rValue.nextInt(255), blue = 1 + rValue.nextInt(255)));
g.fillOval(width+2*idx, height+2*idx, widthOval-5*idx, heightOval-5*idx);
}
}
}

最佳答案

您可以使用 Arc2D用于以浮点/ double 绘制圆的类,因为它是 ShapeGraphics2D类可以绘制形状。

@Override
protected void paintComponent(Graphics g) {
Graphics2D g2d = (Graphics2D) g;
Shape circle = new Arc2D.Double(
// Same values as used in the fillOval function,
// but with double precision.
x, y, width, height,
// Draw a full circle (yes, in degrees).
0, 360,
// Connect the endpoint with the startpoint.
Arc2D.CORD
);
// Paint the circle.
g2d.fill(circle);
}

以类似的方式,您可以使用 Rectangle2D 绘制矩形。类。

此外,请使用 paintComponent 函数代替 paint 函数,如 here 所述.

编辑:
正如 Gerhard 在他的评论中解释的那样,使用 Ellipse2D在这种情况下当然更好更清晰,如下所示:

@Override
protected void paintComponent(Graphics g) { Graphics2D g2d = (Graphics2D) g;
Shape circle = new Ellipse2D.Double(x, y, width, height);
g2d.fill(circle);
}

关于java - 使用 float/double 值制作椭圆形/矩形,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15690579/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com