2017-09-23 6 views
1

WPF에서 PathGeometry의 실제 경로를 가져 오는 방법이 있습니까? .PathGeometry의 실제 경로 얻기

<Path x:Name="right" Canvas.Left="10" Canvas.Top="10" StrokeThickness="3" 
     Stroke="Black" StrokeEndLineCap="Round" StrokeStartLineCap="Round" 
     StrokeLineJoin="Miter" Data="M0,9L4.5,0L9,9 "/>` 

이 생산 :
enter image description here

내가 RenderedGeometry을 검토 한 결과,하지만 내가 넣어 것보다 다른 것을 제공하기 위해 표시되지 않습니다 예를 들어

, 여기 내 XAML입니다

WPF는 모든 함수를 기본적으로 제공합니까 아니면 경로 데이터에서이 모양의 추적 된 윤곽을 가져 오는 방법입니까?

나는이 과 비슷한 것으로 Petzold의 시도를 시도했지만 단순히 작동하지 않습니다.

+1

"실제 경로"란 무엇을 의미하는지 모르겠습니다. 당신이 보는 것은 당신이 넣는 것입니다 : 선으로 연결된 3 점, 둥근 시작과 끝이있는 3 단위 두께의 펜으로 쓰다. 렌더링 레이어에서 생성 된 모자이크 처리 된 지오메트리를 가져 오려고합니까? 여기서 보는 것은 실제로 '모양'이 아닙니다. 그것은 두세 개의 선입니다. –

+0

@MikeStrobel 예 –

+1

감사합니다. 마이크. Petzold의 예제를 보아라. - LineJoin = Round 인 라인들. 'GetWidenedPathGeometry'에서 저는'LineJoin = Mitre'를 얻을 수 있습니다. 그래서 위에서 보았던 모양이 "거의"같지만 Round의 LineCaps는 나타나지 않습니다. –

답변

1

GetWidenedPathGeometry에 소스 경로에서 관련된 모든 스트로크 관련 속성을 적용하는 펜을 사용하십시오.

var pen = new Pen 
{ 
    Thickness = right.StrokeThickness, 
    StartLineCap = right.StrokeStartLineCap, 
    EndLineCap = right.StrokeEndLineCap, 
    LineJoin = right.StrokeLineJoin, 
    MiterLimit = right.StrokeMiterLimit 
}; 

var geometry = right.Data.GetWidenedPathGeometry(pen); 
+0

와우, 정말 멋지다! 누가 그렇게 쉽게 이해할 수 있을지 생각했습니다. 많은 감사합니다! –