경로 태그 구문

경로는 WPF에서 도형 및 기본 그리기 개요기하 도형 개요에서 논의되지만 이 항목에서는 XAML(Extensible Application Markup Language)을 사용하여 경로 기하 도형을 좀 더 간단하게 지정하는 데 사용할 수 있는 강력하고 복잡한 미니 언어에 대해 자세히 설명합니다.

필수 구성 요소

이 항목을 이해하려면 Geometry 개체의 기본 기능을 잘 알고 있어야 입니다. 자세한 내용은 기하 도형 개요를 참조하세요.

StreamGeometry 및 PathFigureCollection 미니 언어

WPF에서는 기하학적 경로를 설명하는 미니 언어를 제공하는 두 개의 클래스, StreamGeometryPathFigureCollection을 제공합니다.

  • UIElementClip 속성 또는 Path 요소의 Data 속성과 같은 Geometry 형식의 속성을 설정할 때 StreamGeometry 미니 언어를 사용합니다. 다음 예제에서는 특성 구문을 사용하여 StreamGeometry를 만듭니다.

    <Path Stroke="Black" Fill="Gray"
          Data="M 10,100 C 10,300 300,-200 300,100" />
    
  • PathGeometryFigures 속성을 설정할 때 PathFigureCollection 미니 언어를 사용합니다. 다음 예제에서는 특성 구문을 사용하여 PathGeometry에 대한 PathFigureCollection을 만듭니다.

    <Path Stroke="Black" Fill="Gray">
      <Path.Data>
        <PathGeometry Figures="M 10,100 C 10,300 300,-200 300,100" />
      </Path.Data>
    </Path>
    

앞의 예제에서 볼 수 있는 것처럼 두 개의 미니 언어는 매우 비슷합니다. StreamGeometry를 사용할 수 있는 모든 상황에서 항상 PathGeometry를 사용할 수 있습니다. 그렇다면 어떤 것을 사용해야 할까요? 경로를 만든 후에 수정할 필요가 없을 때는 StreamGeometry를 사용하고, 경로를 수정해야 할 때는 PathGeometry를 사용합니다.

PathGeometry 개체와 StreamGeometry 개체의 차이점에 대한 자세한 내용은 기하 도형 개요를 참조하세요.

공백에 대한 참고 사항

간단히 말해서 이어지는 구문 섹션에는 단일 공백이 표시되지만 단일 공백이 표시되는 모든 위치에서 여러 개의 공백을 사용해도 됩니다.

두 개의 숫자를 실제로 쉼표나 공백으로 구분할 필요는 없으나 결과 문자열이 모호하지 않는 한도에서만 허용됩니다. 예를 들어 2..3은 실제로 "2."와 ".3"의 두 숫자입니다. 마찬가지로 2-3은 "2"와 "-3"입니다. 명령 앞뒤에는 공백이 필요하지 않습니다.

구문

StreamGeometry에 대한 XAML(Extensible Application Markup Language) 특성 사용 구문은 하나의 선택적 FillRule 값과 하나 이상의 그림 설명으로 구성됩니다.

StreamGeometry XAML 특성 사용
<objectproperty="[ fillRule] figureDescription[ figureDescription]* " ... />

PathFigureCollection에 대한 XAML(Extensible Application Markup Language) 특성 사용 구문은 하나 이상의 그림 설명으로 구성됩니다.

PathFigureCollection XAML 특성 사용
<objectproperty="figureDescription[ figureDescription]* " ... />
용어 설명
fillRule System.Windows.Media.FillRule

StreamGeometryEvenOdd를 사용할지 NonzeroFillRule를 사용할지를 지정합니다.

- F0EvenOdd 채우기 규칙을 지정합니다.
- F1Nonzero 채우기 규칙을 지정합니다.

이 명령을 생략하면 하위 경로는 기본 동작 EvenOdd를 사용합니다. 이 명령을 지정하는 경우 맨 앞에 배치해야 합니다.
figureDescription 이동 명령, 그리기 명령 및 선택적 닫기 명령으로 구성된 그림입니다.

moveCommand drawCommands [ closeCommand ]
moveCommand 그림의 시작점을 지정하는 이동 명령입니다. 이동 명령 섹션을 참조하세요.
drawCommands 그림의 콘텐츠를 설명하는 하나 이상의 그리기 명령입니다. 그리기 명령 섹션을 참조하세요.
closeCommand 그림을 닫는 선택적 닫기 명령입니다. 닫기 명령 섹션을 참조하세요.

이동 명령

새 그림의 시작점을 지정합니다.

구문
MstartPoint

-또는-

mstartPoint
용어 설명
startPoint System.Windows.Point

새 그림의 시작점입니다.

대문자 MstartPoint가 절대값임을 나타내고 소문자 mstartPoint가 이전 점까지의 오프셋이거나 이전 점이 없는 경우 (0,0)임을 나타냅니다. 이동 명령 뒤에 여러 점을 나열하는 경우 선 명령을 지정했어도 해당 점으로 선이 그려집니다.

그리기 명령

그리기 명령은 여러 도형 명령으로 구성될 수 있습니다. 선, 수평선, 수직선, 입방형 3차원 곡선, 정방형 3차원 곡선, 부드러운 입방형 3차원 곡선, 부드러운 정방형 3차원 곡선 및 타원형 호 등의 도형 명령을 사용할 수 있습니다.

대문자 또는 소문자를 사용하여 각 명령을 입력합니다. 대문자는 절대값을 나타내고 소문자는 상대값을 나타냅니다. 해당 세그먼트에 대한 제어점은 이전 예제의 끝점을 기준으로 합니다. 같은 형식의 명령을 2개 이상 순차적으로 입력할 경우 중복되는 명령 항목을 생략해도 됩니다. 예를 들어 L 100,200 300,400L 100,200 L 300,400과 같습니다. 다음 표에서는 이동그리기 명령에 대해 설명합니다.

선 명령

현재 점과 지정된 끝점 간에 직선을 만듭니다. l 20 30L 20,30은 올바른 명령의 예입니다.

구문
LendPoint

-또는-

lendPoint
용어 설명
endPoint System.Windows.Point

선의 끝점입니다.

대문자 LendPoint가 절대값임을 나타내고 소문자 lendPoint가 이전 점까지의 오프셋이거나 이전 점이 없는 경우 (0,0)임을 나타냅니다.

수평선 명령

현재 점과 지정된 x 좌표 간에 수평선을 만듭니다. H 90은 유효한 수평선 명령의 예입니다.

구문
Hx

-또는-

hx
용어 설명
x System.Double

선 끝점의 x 좌표입니다.

대문자 Hx가 절대값임을 나타내고 소문자 hx가 이전 점까지의 오프셋이거나 이전 점이 없는 경우 (0,0)임을 나타냅니다.

수직선 명령

현재 점과 지정된 y 좌표 간에 수직선을 만듭니다. v 90은 유효한 수직선 명령의 예입니다.

구문
Vy

-또는-

vy
용어 설명
y System.Double

선 끝점의 y 좌표입니다.

대문자 Vy가 절대값임을 나타내고 소문자 vy가 이전 점까지의 오프셋이거나 이전 점이 없는 경우 (0,0)임을 나타냅니다.

입방형 3차원 곡선 명령

지정한 두 개의 제어점(controlPoint1 및 controlPoint2)을 사용하여 현재 점과 지정된 끝점 간에 입방형 3차원 곡선을 만듭니다. C 100,200 200,400 300,200은 유효한 곡선 명령의 예입니다.

구문
CcontrolPoint1controlPoint2endPoint

-또는-

ccontrolPoint1controlPoint2endPoint
용어 설명
controlPoint1 System.Windows.Point

곡선의 시작 접선을 결정하는 곡선의 첫 번째 제어점입니다.
controlPoint2 System.Windows.Point

곡선의 끝 접선을 결정하는 곡선의 두 번째 제어점입니다.
endPoint System.Windows.Point

곡선을 그릴 지점입니다.

정방형 3차원 곡선 명령

지정한 제어점(controlPoint)을 사용하여 현재 점과 지정된 끝점 간에 정방형 3차원 곡선을 만듭니다. q 100,200 300,200은 유효한 정방형 3차원 곡선 명령의 예입니다.

구문
Q controlPoint endPoint

-또는-

q controlPoint endPoint
용어 설명
controlPoint System.Windows.Point

곡선의 시작 및 끝 접선을 결정하는 곡선의 제어점입니다.
endPoint System.Windows.Point

곡선을 그릴 지점입니다.

부드러운 입방형 3차원 곡선 명령

현재 점과 지정된 끝점 간에 입방형 3차원 곡선을 만듭니다. 첫 번째 제어점은 현재 점을 기준으로 이전 명령의 두 번째 제어점의 리플렉션으로 간주됩니다. 이전 명령이 없거나 이전 명령이 입방형 3차원 곡선 명령 또는 부드러운 입방 형 3차원 곡선 명령이 아닌 경우 첫 번째 제어점이 현재 점과 일치한다고 가정합니다. 곡선 끝에 대한 제어점인 두 번째 제어점은 controlPoint2로 지정됩니다. 예를 들어 S 100,200 200,300은 유효한 부드러운 입방형 3차원 곡선 명령입니다.

구문
ScontrolPoint2endPoint

-또는-

scontrolPoint2endPoint
용어 설명
controlPoint2 System.Windows.Point

곡선의 끝 접선을 결정하는 곡선의 제어점입니다.
endPoint System.Windows.Point

곡선을 그릴 지점입니다.

부드러운 정방형 3차원 곡선 명령

현재 점과 지정된 끝점 간에 정방형 3차원 곡선을 만듭니다. 제어점은 현재 점을 기준으로 이전 명령의 제어점의 리플렉션으로 간주됩니다. 이전 명령이 없거나 이전 명령이 정방형 3차원 곡선 명령 또는 부드러운 정방 형 3차원 곡선 명령이 아닌 경우 제어점이 현재 점과 일치합니다.

구문
T endPoint

-또는-

t endPoint
용어 설명
endPoint System.Windows.Point

곡선을 그릴 지점입니다.

타원형 호 명령

현재 점과 지정된 끝점 간에 타원형 호를 만듭니다.

구문
A size rotationAngle isLargeArcFlag sweepDirectionFlag endPoint

-또는-

a size rotationAngle isLargeArcFlag sweepDirectionFlag endPoint
용어 설명
size System.Windows.Size

원호의 X 및 y 반지름입니다.
rotationAngle System.Double

타원의 회전 각도입니다.
isLargeArcFlag 호의 각도가 180도보다 커야 하면 1로 설정하고, 그렇지 않으면 0으로 설정합니다.
sweepDirectionFlag 호가 양의 각도 방향으로 그려지면 1로 설정하고, 그렇지 않으면 0으로 설정합니다.
endPoint System.Windows.Point

호를 그리는 점입니다.

닫기 명령

현재 그림을 끝내고 현재 점을 그림의 시작 점에 연결하는 선을 만듭니다. 이 명령은 그림의 마지막 세그먼트와 첫 번째 세그먼트 사이에 선 조인(모서리)을 만듭니다.

구문
Z

-또는-

z

점 구문

(0,0)이 왼쪽 위 모서리인 점의 x 및 y 좌표를 설명합니다.

구문
x , y

-또는-

x y
용어 설명
x System.Double

점의 X 좌표입니다.
y System.Double

점의 Y 좌표입니다.

특수 값

표준 숫자 값 대신 다음과 같은 특수 값을 사용할 수도 있습니다. 이 값은 대/소문자를 구분합니다.

Infinity
Double.PositiveInfinity를 나타냅니다.

-Infinity
Double.NegativeInfinity를 나타냅니다.

NaN
Double.NaN을 나타냅니다.

과학적 표기법을 사용할 수도 있습니다. 예를 들어 +1.e17은 유효한 값입니다.

참고 항목