Path2D 클래스
Path2D 클래스
Path2D 클래스는 임의의 기하 경로를 나타내는 단순하면서도 유연한 도형을 제공해요. PathIterator 인터페이스로 반복할 수 있는 경로를 모든 세그먼트 타입과 윈딩 규칙을 포함해 완전히 표현할 수 있고, Shape 인터페이스의 모든 기본 히트 테스트 메서드를 구현해요.
본문
부동소수점 정밀도로 표현·사용할 수 있는 데이터를 다룰 때는 Path2D.Float을, double 정밀도의 정확성이나 범위가 필요한 데이터는 Path2D.Double을 사용해요.
public abstract sealed class Path2D
extends Object
implements Shape, Cloneable
permits Path2D.Double, Path2D.Float
Path2D는 기하 경로의 기본 구성·관리와 위 인터페이스 구현에 정확히 필요한 기능을 제공해요. 닫힌 도형의 내부를 단순 히트 테스트를 넘어 조작하는 게 유용하다면, Area 클래스가 닫힌 도형에 특화된 추가 기능을 제공해요.
두 클래스 모두 명목상 Shape 인터페이스를 구현하지만 목적이 달라요. Path2D는 주로 경로 세그먼트로 형성된 궤적(trajectory)을 다루고, Area는 2D 기하 공간의 닫힌 영역 해석·조작에 더 초점을 맞춰요. 이 둘을 함께 쓰면 기하 도형의 두 가지 유용한 관점을 얻을 수 있어요.
좌표 추가 메서드
moveTo(double, double)— 새 하위 경로의 시작점을 정해요.lineTo(double, double)— 직선 세그먼트를 추가해요.quadTo(...)— 2차 베지어 곡선을 추가해요.curveTo(...)— 3차 베지어 곡선을 추가해요.closePath()— 하위 경로를 닫아요.append(Shape, boolean)— 다른 도형을 추가해요.getPathIterator(AffineTransform)— 경로 반복자를 반환해요.getWindingRule()/setWindingRule(int)— 윈딩 규칙(WIND_EVEN_ODD,WIND_NON_ZERO)을 조회·설정해요.getBounds2D()— 경계 사각형을 반환해요.
윈딩 규칙
윈딩 규칙은 경로의 어느 영역이 안쪽(내부)인지 결정하는 규칙이에요. WIND_EVEN_ODD(짝수-홀수)와 WIND_NON_ZERO(0이 아닌 값) 두 가지가 있어요. 자세한 설명은 PathIterator 인터페이스 문서를 참고하세요.
사용 예
Path2D path = new Path2D.Double();
path.moveTo(0, 0);
path.lineTo(100, 0);
path.quadTo(150, 50, 100, 100);
path.closePath();
Graphics2D g2d = ...;
g2d.fill(path);