1. ホーム
  2. java

[解決済み] 与えられたX、Y座標を円の中点とする円を描くにはどうしたらよいですか?

2022-02-18 04:38:44

質問内容

私は、タワーからの信号強度の位置を特定するための通信アプリケーションを開発しました。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 は、長方形の中に楕円をはめ込みます。 with width=r, height = r にすると、円になります。 もし fillOval(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