Java AWT fillOval() 不工作
Java AWT fillOval() not working
我正在开发一个绘制图形的程序,所以我想画点!我希望这些点是圆形的,因为这通常是点的表示方式,据我所知,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();
}
然后在 JPanel
的 paintComponent()
方法中调用它。它确实绘制了,所以我知道代码正在运行,但出于某种原因,它绘制了一个正方形,如下所示:
my square oval :(
我也试过这个:
private void drawCenteredCircle(Graphics g, int x, int y, int radius) {
Graphics2D g2 = (Graphics2D) g.create();
g2.setColor(pointColor);
g2.fill(new Ellipse2D.Float(x-radius, y-radius, 2*radius, 2*radius);
g2.dispose();
}
但得到了相同的结果。任何有关如何绘制填充 circle/ellipse 的帮助将不胜感激。
您需要设置 Graphic2D 的 RenderingHints 来处理锯齿。这消除了可能导致您的(小)圆呈现为正方形的锯齿。类似于:
Graphics2D g2 = (Graphics2D) g;
g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
我正在开发一个绘制图形的程序,所以我想画点!我希望这些点是圆形的,因为这通常是点的表示方式,据我所知,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();
}
然后在 JPanel
的 paintComponent()
方法中调用它。它确实绘制了,所以我知道代码正在运行,但出于某种原因,它绘制了一个正方形,如下所示:
my square oval :(
我也试过这个:
private void drawCenteredCircle(Graphics g, int x, int y, int radius) {
Graphics2D g2 = (Graphics2D) g.create();
g2.setColor(pointColor);
g2.fill(new Ellipse2D.Float(x-radius, y-radius, 2*radius, 2*radius);
g2.dispose();
}
但得到了相同的结果。任何有关如何绘制填充 circle/ellipse 的帮助将不胜感激。
您需要设置 Graphic2D 的 RenderingHints 来处理锯齿。这消除了可能导致您的(小)圆呈现为正方形的锯齿。类似于:
Graphics2D g2 = (Graphics2D) g;
g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);