Java AWT fillOval()不起作用

时间:2016-10-09 23:17:04

标签: java swing awt java-2d

我正在制作一个绘制图表的程序,所以我想画点!我希望这些要点是循环的,因为通常如何表示点,据我所知,g2.fillOval(x, y, height, width)应该绘制一个高度为height和宽度的填充椭圆width (x, y)。这是我目前的代码:

private void drawCenteredCircle(Graphics g, int x, int y, int radius) {
    Graphics2D g2 = (Graphics2D) g.create();
    g2.setColor(pointColor);
    g2.fillOval(x-radius, y-radius, 2*radius, 2*radius);
    g2.dispose();
}

然后在paintComponent()的{​​{1}}方法中调用哪个。它确实绘制了,所以我知道代码正在运行,但出于某种原因,它绘制了一个正方形,如下所示: my square oval :(

enter image description here

我也试过这个:

JPanel

但得到了同样的结果。任何关于如何绘制实心圆/椭圆的帮助都将非常感激。

1 个答案:

答案 0 :(得分:3)

您需要设置Graphic2D的RenderingHints来处理锯齿。这可以消除可能导致您的(小)圆形呈现为正方形的锯齿状。类似的东西:

Graphics2D g2 = (Graphics2D) g;
g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);