如何绘制一个以给定的X和Y坐标作为圆的中间点的圆?

2022-09-01 19:51:03

我开发了一个电信应用程序,用于定位信号塔的信号强度。我使用过java swing,在移动信号发射器塔位置的给定点周围绘制圆圈时遇到了问题。我已经计算了X,Y坐标以及半径值。

请找到我用来绘制圆圈的以下代码,它遇到了问题。

JPanel panelBgImg = new JPanel() {
    public void paintComponent(Graphics g) {
        g.drawOval(X, Y, r, r);
    }
}

问题是,它创建了圆,但它没有将X和Y坐标作为中心点。它以 X 和 Y 坐标作为圆的左上角。

任何人都可以帮我画圆,把给定的X和Y坐标作为圆的中心点。


答案 1

在矩形内安装一个椭圆形,你得到一个圆圈。如果要绘制一个圆,其中心位于(x,y),则必须将矩形的宽度和高度的一半置换。fillOvalwith width=r, height = rfillOval(x,y,r,r)

public void drawCenteredCircle(Graphics2D g, int x, int y, int r) {
  x = x-(r/2);
  y = y-(r/2);
  g.fillOval(x,y,r,r);
}

这将绘制一个圆,其中心位于x,y


答案 2

所以我们都在做同样的家庭工作?

奇怪的是,投票率最高的答案是错误的。请记住,绘制/填充Oval将高度和宽度作为参数,而不是半径。因此,要使用用户提供的 x、y 和半径值正确绘制圆并将其居中,您需要执行以下操作:

public static void drawCircle(Graphics g, int x, int y, int radius) {

  int diameter = radius * 2;

  //shift x and y by the radius of the circle in order to correctly center it
  g.fillOval(x - radius, y - radius, diameter, diameter); 

}

推荐