マウスの位置を正確な解像度で float または double で取得するにはどうすればよいですか?
-
19-09-2019 - |
質問
マウスのクリック位置をfloatまたはdoubleで取得する必要がありますが、どうすればよいですか?マウスリスナーでは、次のようにポイントを取得します。
e.getPoint();
しかし、Point オブジェクトの x と y の値は整数なので、float または double の位置が必要です。助けていただければ幸いです。
編集 正確な解像度が必要です。
解決
getPoint()
座標が指定される精度であるため、整数値が得られます。見る http://java.sun.com/j2se/1.4.2/docs/api/java/awt/Point.html.
なぜ浮動小数点値が必要なのでしょうか?
編集:コメントに応じて、floor (常に切り捨て) またはround (最も近い int に丸める) などの関数を使用して、絶対位置を画面上のピクセルにマップする必要があります。システムには 0.2 ピクセルなどの概念はありません。計算の小数部分を継続的に切り捨てることも、常に正確な座標を維持して必要に応じてピクセルにマッピングすることもできます。
他のヒント
から int
にキャストできるはずです double
または float
問題なく:
double x = e.getPoint().x;
double y = e.getPoint().y;
ただし、すでにそれを行うメソッドがあります。
double x = e.getPoint().getX();
double y = e.getPoint().getY();
ここで何かが足りないのでしょうか?
精度は高くならないことに注意してください。マウスはフルピクセルまでしかスナップできないため、通常は整数で問題ありません。ただし、これらの値に基づいて計算する必要がある場合は、浮動小数点表現が役立つ場合があります。
これ以上正確な点を知ることはできません getPoint()
, 、2 つの整数のみを保持する Point オブジェクトを返します。これで何を達成したいですか?