다음을 통해 공유


경로 마크업 문법

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

필수 구성 요소

이 항목을 이해하려면 Geometry 개체의 기본 기능을 잘 알고 있어야 합니다. 자세한 정보는 기하 개요를 참조하십시오.

StreamGeometry 및 PathFigureCollection Mini-Languages

WPF는 기하학적 경로를 설명하기 위한 미니 언어를 제공하는 두 가지 클래스인 StreamGeometryPathFigureCollection제공합니다.

  • Geometry형식의 속성을 설정할 때, UIElementClip 속성이나 Path 요소의 Data 속성과 같이 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 개체의 차이점에 대한 자세한 내용은 Geometry 개요참조하세요.

공백에 대한 참고 사항

간결하게 말하면 다음 구문 섹션에 단일 공백이 표시되지만, 단일 공백이 표시되는 곳마다 여러 공백이 허용됩니다.

실제로 두 숫자를 쉼표나 공백으로 구분할 필요는 없지만 결과 문자열이 명확하지 않은 경우에만 이 작업을 수행할 수 있습니다. 예를 들어 2..3 실제로 두 개의 숫자인 "2." 및 ".3"입니다. 마찬가지로 2-3 "2" 및 "-3"입니다. 명령 앞이나 뒤에 공백이 필요하지 않습니다.

통사론

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

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

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

PathFigureCollection XAML 사용 특성
< 개체속성="figureDescription[ figureDescription]* " ... />
학기 묘사
fillRule System.Windows.Media.FillRule

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

- F0 EvenOdd 채우기 규칙을 지정합니다.
- F1 Nonzero 채우기 규칙을 지정합니다.

이 명령을 생략하면 하위 경로는 EvenOdd기본 동작을 사용합니다. 이 명령을 지정하는 경우 먼저 위치시켜야 합니다.
figureDescription 이동 명령, 그리기 명령 및 선택적인 닫기 명령으로 구성된 그림입니다.

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

이동 명령

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

통사론
startPoint

-또는-

startPoint
기간 묘사
startPoint System.Windows.Point

새 그림의 시작점입니다.

대문자 MstartPoint 절대값임을 나타냅니다. 소문자 mstartPoint 이전 지점의 오프셋이거나(0,0)이 없는 경우를 나타냅니다. 이동 명령 다음에 여러 점을 나열하면, 선 명령을 지정했음에도 불구하고 그 점들에 선이 그려집니다.

그리기 명령

그리기 명령은 여러 셰이프 명령으로 구성됩니다. 다음 셰이프 명령을 사용할 수 있습니다. 선, 가로선, 세로선, 입방형 베지어 곡선, 4차원 베지어 곡선, 부드러운 입방형 베지어 곡선, 부드러운 4차원 베지어 곡선 및 타원형 호.

대문자나 소문자를 사용하여 각 명령을 입력합니다. 대문자는 절대값을 나타내고 소문자는 상대 값을 나타냅니다. 해당 세그먼트의 제어점은 이전 예제의 끝점을 기준으로 합니다.

동일한 형식의 두 개 이상의 명령을 순차적으로 입력하는 경우 중복 명령 항목을 생략할 수 있습니다. 예를 들어 L 100,200 300,400L 100,200 L 300,400동일합니다.

라인 명령

현재 점과 지정된 끝점 사이에 직선을 만듭니다. l 20 30L 20,30 유효한 명령의 예입니다.

통사론
엔드포인트

-또는-

엔드포인트
용어 묘사
엔드포인트 System.Windows.Point

줄의 끝점입니다.

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

가로줄 명령

현재 점과 지정된 x 좌표 사이에 가로 선을 만듭니다. H 90 유효한 가로줄 명령의 예입니다.

통사론
H x

-또는-

h x
학기 묘사
x System.Double

선 끝점의 x 좌표입니다.

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

세로줄 명령

현재 점과 지정된 y 좌표 사이에 세로선을 만듭니다. v 90 유효한 세로줄 명령의 예입니다.

통사론
V y

-또는-

v y
기간 묘사
y System.Double

선 끝점의 y 좌표입니다.

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

입방형 베지어 곡선 명령

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

통사론
C controlPoint1controlPoint2endPoint

-또는-

c controlPoint1controlPoint2endPoint
기간 설명
controlPoint1 System.Windows.Point

곡선의 시작 탄젠트를 결정하는 곡선의 첫 번째 제어점입니다.
controlPoint2 System.Windows.Point

곡선의 끝 탄젠트를 결정하는 곡선의 두 번째 제어점입니다.
endPoint System.Windows.Point

곡선이 그려지는 지점입니다.

4차원 베지어 곡선 명령

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

통사론
Q controlPoint endPoint

-또는-

q controlPoint endPoint
기간 묘사
controlPoint System.Windows.Point

곡선의 시작 및 끝 탄젠트를 결정하는 곡선의 제어점입니다.
endPoint System.Windows.Point

곡선이 그려지는 지점입니다.

부드러운 입방형 베지어 곡선 명령

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

통사론
S controlPoint2endPoint

-또는-

s controlPoint2endPoint
용어 설명
controlPoint2 System.Windows.Point

곡선의 끝 탄젠트를 결정하는 곡선의 제어점입니다.
endPoint System.Windows.Point

곡선이 그려지는 지점입니다.

부드러운 이차형 베지어 곡선 명령

현재 점과 지정된 끝점 사이에 2차 베지어 곡선을 만듭니다. 제어점은 현재 지점을 기준으로 이전 명령의 제어점을 반영하는 것으로 간주됩니다. 이전 명령이 없거나 이전 명령이 이차형 Bezier 곡선 명령이나 부드러운 이차형 Bezier 곡선 명령이 아닌 경우 제어점은 현재 점과 일치합니다.

통사론
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 좌표입니다.

특수 값

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

무한대
이것은 Double.PositiveInfinity을 나타냅니다.

-무한대
Double.NegativeInfinity을/를 나타냅니다.

NaN
Double.NaN을(를) 나타냅니다.

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

참고