2010-12-30 19 views
3

LineSegmentで構成されるPathGeometryが必要です。XAML PathGeometryをWPF PathGeometryに変換する

私はこの最初のコードを使用しますが、エラーです。

この2番目のコードを使用すると、エラーではありませんが、LineSegmentではありません。結果はPolyLineSegmentになりますが、LineSegmentが必要です。

PathGeometry temp = (PathGeometry)Geometry.Parse(
       "M29,329L30,331L31,334L33,336L34,338L36,341L38,343L39,345L41,348L44,352L46,353L47,355L48,356L49,357L49,357L50,358L50,358L51,357L50,356L51,354L51,350L53,342L54,334L58,320L60,315L61,311L63,308L63,306L64,304L65,303L65,302L66,301L66,301L66,301L66,301L66,301L66,301L66,301"); 

どのようにしてXAML PathGeometryをWPF PathGeometryに変換できますか?

XAMLを解析するためのおかげで

答えて

9

あなたのコードが間違っている、あなたは、XAMLリーダーを使用して、必要な型に結果をキャストする必要があります。例えば:

System.Windows.Shapes.Path newPath = (System.Windows.Shapes.Path)System.Windows.Markup.XamlReader.Parse("<Path xmlns='http://schemas.microsoft.com/winfx/2006/xaml/presentation' Width='20' Height='80' Stretch='Fill' Fill='#FF000000' Data='M 20,25.2941L 20,29.4118L 15.9091,29.4118L 15.9091,40L 12.2727,40L 12.2727,29.4118L 2.54313e-006,29.4118L 2.54313e-006,25.6985L 13.4872,7.62939e-006L 15.9091,7.62939e-006L 15.9091,25.2941L 20,25.2941 Z M 12.2727,25.2941L 12.2727,5.28493L 2.09517,25.2941L 12.2727,25.2941 Z M 20,65.2941L 20,69.4118L 15.9091,69.4118L 15.9091,80L 12.2727,80L 12.2727,69.4118L -5.08626e-006,69.4118L -5.08626e-006,65.6985L 13.4872,40L 15.9091,40L 15.9091,65.2941L 20,65.2941 Z M 12.2727,65.2941L 12.2727,45.2849L 2.09517,65.2941L 12.2727,65.2941 Z ' HorizontalAlignment='Left' VerticalAlignment='Top' Margin='140,60,0,0'/>"); 
LayoutRoot.Children.Add(newPath); 

あなたはコードビハインドを使用している場合は、XAMLスニペットを解析したい理由があるのでしょうか?次のようにプログラムでパスを作成することができます

Path path = new Path(); 
PathGeometry geometry = new PathGeometry(); 
PathFigure figure = new PathFigure(); 
figure.StartPoint = new Point(10,10); 
figure.Segments.Add(new LineSegment() 
{ 
    Point = new Point (20, 20) 
}); 

// e.g. add more segments here 

geometry.Figures.Add(figure); 
path.Data = geometry; 

パスは、セグメントで構成されている数字で構成されたジオメトリ、で構成されています!

あなたは普遍的な価値コンバータ使用することができます後ろにコードを簡素化パスデータを使用する場合:私は、XAMLファイルにPathGeometryをを保存して、XAMLファイルからPathGeometryをを復元したいので

http://www.scottlogic.co.uk/blog/colin/2010/07/a-universal-value-converter-for-wpf/

+0

を。 –

+0

OK - 上記の私の編集を参照してください。 XAMLリーダーを使用する – ColinE

+0

Path、PathGeometry、およびPathFigureコードは非常に役に立ちました。ありがとうございました。 – MikeMalter

関連する問題