WPF는 그래픽 그리기 콘텐츠를 나타내기 위해 Drawing 및 Shape 개체를 모두 제공합니다. 그러나 Drawing 개체는 Shape 개체보다 간단한 구문이며 더 나은 성능 특성을 제공합니다.
Shape를 사용하면 그래픽 도형을 화면에 그릴 수 있습니다. Shape 개체는 FrameworkElement 클래스에서 파생되므로 패널 및 대부분의 컨트롤 내에 사용될 수 있습니다.
WPF는 그래픽 및 렌더링 서비스에 대한 여러 계층의 액세스를 제공합니다. 최상위 계층에서 Shape 개체는 사용이 간편하고 레이아웃 및 이벤트 처리와 같은 많은 유용한 기능을 제공합니다. WPF는 바로 사용할 수 있는 여러 Shape 개체를 제공합니다. 모든 Shape 개체는 Shape 클래스에서 상속됩니다. 사용 가능한 Shape 개체에는 Ellipse, Line, Path, Polygon, Polyline 및 Rectangle이 있습니다.
반면에 Drawing 개체는 FrameworkElement 클래스에서 파생되지 않으며 도형, 이미지 및 텍스트를 렌더링하기 위한 보다 가벼운 구현을 제공합니다.
다음과 같은 네 가지 형식의 Drawing 개체가 있습니다.
GeometryDrawing 개체는 기하 도형 콘텐츠를 렌더링하는 데 사용됩니다. Geometry 클래스 및 이 클래스에서 파생되는 구체적인 클래스(예: CombinedGeometry, EllipseGeometry 및 PathGeometry)는 2차원 그래픽을 렌더링하는 방식뿐만 아니라 적중 테스트 및 클리핑 지원을 제공합니다. Geometry 개체를 사용하면 컨트롤 영역을 정의하거나 이미지에 적용할 클립 영역을 정의하는 등의 작업을 수행할 수 있습니다. Geometry 개체는 사각형 및 원과 같은 단순 영역 또는 둘 이상의 Geometry 개체에서 만들어진 복합 영역이 될 수 있습니다. 더 복잡한 기하 도형 영역은 ArcSegment, BezierSegment 및 QuadraticBezierSegment와 같은 PathSegment 파생 개체를 결합하여 만들 수 있습니다.
겉으로 보기에 Geometry 클래스와 Shape 클래스는 매우 비슷합니다. 둘 다 2차원 그래픽을 렌더링하는 데 사용되고 해당 클래스에서 파생되는 유사한 구체적인 클래스(예: EllipseGeometry 및 Ellipse)를 가집니다. 그러나 두 클래스 집합 사이에는 중요한 차이점이 존재합니다. 예를 들어 자신을 그리는 기능과 같은 Shape 클래스의 일부 기능이 Geometry 클래스에는 없습니다. Geometry 개체를 그리려면 DrawingContext, Drawing 또는 Path(Path가 Shape라는 것에 주의)와 같은 또 다른 클래스를 사용하여 그리기 작업을 수행해야 합니다. 채우기, 스트로크 및 스트로크 두께와 같은 렌더링 속성이 Geometry 개체를 그리는 클래스에서 있는 반면에 Shape 개체는 이러한 속성을 포함합니다. 이 차이를 보여 주는 한 가지 예로, Geometry 개체는 원과 같은 영역을 정의하는 반면에 Shape 개체는 영역을 정의하고 영역 채우기 및 윤곽선 그리기 방법을 정의하며 레이아웃 시스템에 참여할 수 있습니다.
Shape 개체가 FrameworkElement 클래스에서 파생되므로 이러한 개체를 사용하면 응용 프로그램에서 메모리 사용량이 크게 증가할 수 있습니다. 그래픽 콘텐츠에 FrameworkElement 기능이 실제로 필요하지 않은 경우 보다 간단한 Drawing 개체를 사용해 보십시오.
Drawing 개체에 대한 자세한 내용은 Drawing 개체 개요를 참조하십시오.