2017-09-23 19 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は任意の関数をネイティブに提供しますか、パスデータにこの図形のトレースされたアウトラインを取得する方法はありますか?

私はこのhereと同様のものでPetzoldの試みを試みましたが、単純に機能しません。

+1

「実際のパス」とはどういう意味ですか。あなたが見ているのは、あなたが入れているものです。3つのポイントが線で結ばれ、始まりと終わりが丸い3単位のペンで描かれます。レンダリングレイヤーで作成されたテッセレーションされたジオメトリを取得しようとしていますか?あなたがここに見ているのは本当に「形」ではありません。それはストロークラインのカップルです。 –

+0

@MikeStrobelはい –

+1

ありがとうマイク。 Petzoldの例を見てください。LineJoin = Roundのラインもあります。 'GetWidenedPathGeometry'では、' LineJoin = Mit'を得ることができます。上に表示されている「ほとんど」の形状ですが、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

うわー、それは素晴らしいです!誰がそれがとても簡単だろうと思っていたのだろうか。どうもありがとう! –

関連する問題