0

Javaで視覚化を開発しています。でも問題があります。プログラムで Arc2D を描画しており、Arc2D に MouseInputListener を追加したいと考えています。問題は、Arc2D オブジェクトが、描画されている線だけでなく、四角形にまたがって伸びていることです。したがって、マウスオーバー効果を取得したい場合は、Arc2D の線だけでなく、四角形全体が対象になります。この問題の解決策はありますか?

私のコードは次のようになります。

final Arc2D arc =
   new Arc2D.Double(x_pos, 10, x2_pos-x_pos, 190, 0, 360, Arc2D.OPEN);
JPanel jp = new JPanel();
addMouseInputListener(new MouseInputAdapter() {
   @Override
   public void mouseMoved(MouseEvent e) {
      System.out.println( "X: " + e.getX() + " Y: " + e.getY() +
         " Does it touch the arc?: " + arc.contains(e.getX(), e.getY()));
   }
   // More MouseInputListener methods... 
});
ga.draw(arc);
4

1 に答える 1

0

曲線から点までの距離を計算する必要があります。次に、曲線から適切な距離内にあるかどうかを確認します。わずか 1 ピクセルの厚さのホットスポットは必要ありませんか?!

これを行うのは、思ったほど簡単ではありません。あなたが取る必要があります

rsquared = pow((e.getX()-circle_centre.x),2) + pow(e.getY()-circle_centre.y,2);

そして、それが間隔内にあるかどうかを確認します

rsquared<circle_radius+threshold && rsquared>circle_radius-threshold

そして角度をチェック

angle = Math.atan2(e.getX()-circle_centre.y, e.getY()-circle_centre.y);

これも必要な間隔にある必要があります。

于 2013-02-16T14:56:07.380 に答える