2017-11-04 35 views
0

스윙을 사용하여 페인트 프로그램을 만들려고합니다. 나는 타원, 선, 직사각형 등 사용자가 그릴 수있는 여러 가지 모양을 가지고 있습니다. 도형은 다양한 선 (선 두께)을 사용하여 graphics2d를 사용하여 그릴 수 있으며 채울 수도 있고 채울 수도 있습니다.스윙 페인트 프로그램 - 선택을 처리하는 방법?

사용자가 마우스 오른쪽 단추로 모양을 클릭하고 끌어서 이동할 수있는 기능을 구현하려고합니다.

내 현재 전략은 모양의 배열을 폴링하는 것이 역순입니다 (여러 모양의 경우 가장 최근에 추가 된 것이 의미 됨).

각 셰이프 구현에는 isSelected(int x, int y)이라는 메서드가 있습니다. 포인트가 모양에 해당하는지 판단하는 방법을 알아야합니다. 한 가지 도전 과제는 타원과 같은 채워지지 않은 모양을 내부를 클릭 할 때 선택하지 말고 채워지면 선택해야한다는 것입니다. 또한 선택은 뇌졸중의 두께에 반응해야합니다. 즉, 선의 정확한 중심뿐만 아니라 두꺼운 선을 사용하는 경우 외부 영역을 클릭하여 선을 선택해야합니다.

어떻게 구현할 수 있습니까?

+0

질문을 확인 할에 따라 "어떻게"당신이 모양을 저장하는에 따라 달라집니다. Java의 그래픽 2D API는 미리 정의 된 모양을 가진 'Shape'개념을 지원합니다. 여기에는 지정된 점이 경계 내에 있는지 확인하는 기능이 포함되어 있습니다. – MadProgrammer

+0

이 API의 2D 모양을 구현하는 사용자 정의 유형의 배열을 저장합니다. – Airhead

답변

1
내가 그런

당신이 사용할 수있는이 API에서 2 차원 형태를 구현하는 사용자 정의 유형의 배열에 저장하고

:

은 당신이 가진 정보와 당신이

+0

이 방법은 작동하지만 채우기/채움되지 않은 모양의 논리는 처리하지 않습니다. – Airhead

+0

당신은 어떻게 그걸 의미합니까? 실제로 구현 한 방법에 대한 내용이 없으므로 더 이상의 제안을하기가 어렵습니다. – MadProgrammer

+0

MadErgrammer가 제시 한 내용은 채워진 모양과 채워지지 않은 모양을 처리 할 수 ​​있어야합니다. 테스트 해 봤니? – user3437460