2017-11-20 10 views
0

화면 상에 객체를 표현해야합니다 (원이라고합시다). 나는 이미 그것들의 목록을 가지고 있으며 그들의 좌표도 주어져있다.JavaFX에서 부정적인 좌표로 객체 표현하기

주어진 개체는 x와 y의 음수 값을 포함 할 수 있습니다. JavaFX에서 알 수 있듯이 좌표계는 0부터 시작하여 왼쪽 위 구석에서 시작하여 기본적으로 양수 값만 있습니다.

어떻게 든 부정적인 측면에있는 서클을 볼 수있는 방법이 있습니까?

스크롤링으로 해결할 수 있습니까?

+1

실제로 수행하려는 작업과 원하는 실제 동작에 따라 간단히 ['Group'] (https://docs.oracle.com/javase/9/docs/api/javafx/scene)을 사용하십시오. /Group.html)을 사용하여 도형을 포함 할 수 있습니다. 또는, 어떤 종류의'Pane'을 사용한다면, pane의'translateX'와'translateY' ​​속성을 설정할 수 있습니다. –

답변

0

나만의 '축'세트를 추가하는 것이 좋습니다 (화면에 표시할지 여부는 상관 없습니다). 어딘가에서 원점 (0,0)을 사용하여 생각할 수 있습니다. 화면 중간. 캔버스가 500x500이면 원점은 (250,250)이됩니다. 그런 다음 모든 객체에 대해 원점 좌표를 추가하여 '원시'좌표를 화면에 표시 할 수 있습니다. 따라서 중심이 (-10,50) 인 원이 (240,200)에 표시됩니다.

여전히 화면에 개체가있는 경우 마우스 수신기를 추가하여 클릭하고 끌기 유형을 추가하는 것이 좋습니다. 의사 코드에서이를 수행하는 방법은 다음과 같습니다.

마우스가 눌려 졌을 때 마우스를 눌렀을 때의 화면 좌표를 기록하고이를 변수 dragStartPoint 또는 다른 것으로 저장하십시오.

마우스가 올려 져있는 상태에서 드래그 한 후 마우스를 놓을 때의 화면 좌표를 기록하고 이름을 dragEndPoint로 지정하십시오. dragEndPoints에서 dragStartPoint의 좌표를 빼고 그 차이를 원점 좌표와 나머지 객체에 적용합니다.

이 클릭 및 드래그 스크롤을 사용하는 경우 원본 (0,0)부터 시작할 수 있습니다. 행운을 빌어 요, 마우스 수신기의 예제 코드가 필요한 경우 나중에이 게시물을 편집 할 수 있습니다.

onMouseUp 대신 onMouseMoved를 모두 변경하여 응답 성을 높일 수도 있습니다. 마우스를 onMouseMoved에서 누르기 만하면 항상 스크롤되지 않으므로이를 확인해야합니다.