자바 도형 예제

avatar
| Uncategorized

이것은 Java에서 기본 모양을 만드는 방법에 대한 예입니다. 타원은 위치, 너비 및 높이로 완전히 정의됩니다. 예를 들어 Java 2D는 임의의 Shape 개체에서 매우 일반적인 작업을 수행할 수 있습니다. 이를 가능하게 하기 위해 Shape 인터페이스는 원하는 모양에 대한 매우 일반적인 설명을 노출합니다. 예를 들어 getBounds() 및 getBounds2D() 메서드는 셰이프에 대한 경계 상자를 반환합니다. 다양한 포함() 메서드는 지정된 점 또는 사각형이 셰이프에 의해 동봉되어 있는지 여부를 테스트합니다. 교차() 메서드는 지정된 사각형이 셰이프에 닿거나 겹치는지 여부를 테스트합니다. 이러한 방법을 사용하면 클리핑, 적중 감지 및 유사한 작업을 수행할 수 있습니다. Java 관리에 사용할 수 있는 많은 도구가 있습니다. 이러한 소프트웨어는 전체 프로세스를 용이하게 … 이 코드는 사각형에서 타원을 빼서 셰이프를 생성합니다. 클래스 계층구조를 디자인할 때 이러한 계층 구조의 맨 위에 가까운 클래스가 아래쪽에 있는 클래스보다 더 일반적이라는 것을 알 수 있습니다.

예를 들어 차량 수퍼클래스는 트럭 하위 클래스보다 더 일반적입니다. 마찬가지로 셰이프 수퍼클래스는 원 또는 사각형 하위 클래스보다 더 일반적입니다. getBounds() 및 교차() 메서드는 중요하지만 셰이프를 그리는 방법에 대해서는 아무 말도 하지 않습니다. 이것은 java.awt.geom.PathIterator 객체를 반환하는 getPathIterator()의 작업으로, 모양을 Java 2D가 기본 수준에서 처리할 수 있는 개별 선 및 곡선 세그먼트의 시퀀스로 나눕니다. PathIterator 인터페이스는 기본적으로 GeneralPath의 반대입니다. GeneralPath를 사용하면 선 및 곡선 세그먼트로 셰이프를 빌드할 수 있지만 PathIterator는 모양을 구성요소 선 및 곡선 세그먼트로 나눕니다. 일반 클래스를 인스턴스화하는 것은 의미가 없습니다. 결국, 차량 객체는 무엇을 설명할 것인가? 마찬가지로 Shape 개체는 어떤 종류의 셰이프를 표시합니까? Shape에서 빈 draw() 메서드를 코딩하는 대신 이 메서드가 호출되지 않고 두 엔터티를 추상화로 선언하여 이 클래스가 인스턴스화되지 않도록 할 수 있습니다.

이러한 선은 타원에 사각형을 추가하여 셰이프를 생성합니다. 여러 setCurve 메서드는 다른 점의 좌표에 의해 지정된 배열을 사용하여 좌표를 직접 정의할 수 있는 곡선의 끝점과 컨트롤 포인트를 지정하는 데 사용됩니다. 매우 유용한 방법인 setCurve(쿼드커브2D)는 제공된 곡선과 동일한 끝점과 제어점을 사용하여 이차 곡선을 설정합니다. 예를 들어 다음 예제에서 표현된 기본 을 지정하는 클래스는 Shape 인터페이스를 구현하고 자체 메서드를 추가하는 직사각형 Shape 클래스를 확장합니다. java.awt.geom 패키지에는 이러한 기본 미리 정의된 셰이프 외에도 복잡한 모양을 정의하기 위한 두 가지 강력한 클래스가 포함되어 있습니다. 영역 클래스를 사용하면 다른 셰이프의 결합 또는 교차인 셰이프를 정의할 수 있습니다. 또한 한 셰이프를 다른 셰이프에서 빼거나 두 셰이프의 단독 OR인 셰이프를 정의할 수 있습니다. 예를 들어 다음 코드를 사용하면 사각형에서 원을 빼서 발생하는 모양을 채울 수 있습니다: RoundRectangle2D 오브젝트의 위치, 크기 및 호를 설정하려면 RoundRect(이중 a, double y, double w, double h, double arcWidth) 이중 아크높이)를 사용합니다. 예를 들어, CubicCurve2D 클래스는 두 번째 제어점을 제외하고 곡선을 QuadraticCurve2D클래스로 설정하는 유사한 방법을 가있습니다. 예: 이 섹션에 표시된 모든 예제는 java.awt.geom 패키지를 사용하여 형상을 만든 다음 Graphics2D 클래스를 사용하여 렌더링합니다. 예를 들어 paint() 메서드의 그래픽 매개변수를 캐스팅하여 Graphics2D 오브젝트를 가져오려면