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

标签 java swing jpanel java-2d paintcomponent

我开发了一个用于定位信号塔信号强度的电信应用程序。我使用了 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坐标作为圆的中心点来画圆。

最佳答案

fillOval 将椭圆放入矩形内,width=r, height = r 你得到一个圆。 如果您希望 fillOval(x,y,r,r) 以 (x,y) 为中心绘制一个圆,您必须将矩形替换一半宽度和一半高度。

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

处绘制一个圆心

关于java - 如何以给定的 X 和 Y 坐标绘制一个圆作为圆的中间点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19386951/

相关文章:

java - 使用数组作为 hashmap java 的键

java - LWUIT:设置按钮样式

java - 整数解析 int 不起作用

java - 这是糟糕的编程习惯吗

java - 如何将 JButton 放置在 JPanel 中的自定义位置?

java - 如何改变 JPlane 的位置?

Java:水平和垂直移动比对角线移动快

java - 如何使用 getPurchases() - Android

java - 循环遍历 JPanel 中的嵌套字段

java - 在嵌套面板中监听击键