정확한 해상도로 플로트 또는 두 배로 마우스 위치를 얻는 방법은 무엇입니까?
-
19-09-2019 - |
문제
마우스 클릭 위치를 플로트 또는 두 배로 가져 가야합니다. 어떻게 할 수 있습니까? 마우스 리스너에서는 다음과 같은 점을 취합니다.
e.getPoint();
그러나 Point Object의 x 및 y 값은 정수이며 플로트 또는 두 배의 위치가 필요합니다. 모든 도움이 감사하겠습니다.
편집하다 정확한 해결이 필요합니다.
해결책
getPoint()
정수 값을 제공합니다. 좌표가 지정되는 정밀도이기 때문입니다. 보다 http://java.sun.com/j2se/1.4.2/docs/api/java/awt/point.html.
부동 소수점 값이 필요한 이유는 무엇입니까?
편집하다: 의견에 응답하여 바닥 (항상 둥글게) 또는 둥근 (둥근 둥근 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()
, Wich는 두 정수 만 보유하는 포인트 객체를 반환합니다. 이것으로 무엇을 달성하고 싶습니까?