스윙을 사용하여 페인트 프로그램을 만들려고합니다. 나는 타원, 선, 직사각형 등 사용자가 그릴 수있는 여러 가지 모양을 가지고 있습니다. 도형은 다양한 선 (선 두께)을 사용하여 graphics2d를 사용하여 그릴 수 있으며 채울 수도 있고 채울 수도 있습니다.스윙 페인트 프로그램 - 선택을 처리하는 방법?
사용자가 마우스 오른쪽 단추로 모양을 클릭하고 끌어서 이동할 수있는 기능을 구현하려고합니다.
내 현재 전략은 모양의 배열을 폴링하는 것이 역순입니다 (여러 모양의 경우 가장 최근에 추가 된 것이 의미 됨).
각 셰이프 구현에는 isSelected(int x, int y)
이라는 메서드가 있습니다. 포인트가 모양에 해당하는지 판단하는 방법을 알아야합니다. 한 가지 도전 과제는 타원과 같은 채워지지 않은 모양을 내부를 클릭 할 때 선택하지 말고 채워지면 선택해야한다는 것입니다. 또한 선택은 뇌졸중의 두께에 반응해야합니다. 즉, 선의 정확한 중심뿐만 아니라 두꺼운 선을 사용하는 경우 외부 영역을 클릭하여 선을 선택해야합니다.
어떻게 구현할 수 있습니까?
질문을 확인 할에 따라 "어떻게"당신이 모양을 저장하는에 따라 달라집니다. Java의 그래픽 2D API는 미리 정의 된 모양을 가진 'Shape'개념을 지원합니다. 여기에는 지정된 점이 경계 내에 있는지 확인하는 기능이 포함되어 있습니다. – MadProgrammer
이 API의 2D 모양을 구현하는 사용자 정의 유형의 배열을 저장합니다. – Airhead