정확한 해상도로 플로트 또는 두 배로 마우스 위치를 얻는 방법은 무엇입니까?

StackOverflow https://stackoverflow.com/questions/2417425

문제

마우스 클릭 위치를 플로트 또는 두 배로 가져 가야합니다. 어떻게 할 수 있습니까? 마우스 리스너에서는 다음과 같은 점을 취합니다.

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는 두 정수 만 보유하는 포인트 객체를 반환합니다. 이것으로 무엇을 달성하고 싶습니까?

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top