4

「M00l1010」のようなパスデータを同等のライン/カーブセグメントコードに変換するツールがあるかどうか疑問に思いました。

現在使用しているもの:

string pathXaml = "<Path xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\" xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\" Data=\"M 0 0 l 10 10\"/>";
Path path = (Path)System.Windows.Markup.XamlReader.Load(pathXaml);

XamlParserの呼び出しは、線分を明示的に作成するよりもはるかに遅いように思われます。ただし、多くのパスを手動で変換するのは非常に面倒です。

4

2 に答える 2

4

このプログラムは変換を行います: http ://stringtopathgeometry.codeplex.com/

于 2010-03-15T01:19:52.260 に答える
1

ジオメトリミニ言語からC#またはVBコードを生成するための組み込みはありませんが、次のように作成できます。

  • PathGeometryを新しくするためにC#またはVBコードを発行します。
  • PathFigureCollection.Parseパス文字列を呼び出します。これにより、インスタンスが返されPathFigureCollectionます。
  • PathFigureCollectionを繰り返し処理します。各図について:
    • PathFigureオブジェクトを新規作成してPathGeometry.Figuresコレクションに追加するためのC#またはVBコードを書き出します。
    • フィギュアのセグメントコレクションを繰り返し処理します。セグメントごとに、そのタイプを分析し、タイプに依存するコードを発行して、適切な種類のPathSegmentを更新し、そのプロパティを設定して、現在のPathFigureに追加します。

これがパスを手動で変換するよりも多かれ少なかれ退屈であるかどうかは、あなただけが決めることができます...それはおそらくあなたが処理する必要のある異なる種類のセグメントの数(つまりあなたのパスに現れる異なる種類のセグメントの数)に依存します文字列)、LineSegments、ArcSegmentsなどに個別のコードを記述する必要があるため。

編集:PathFigureCollection.Parseに注意を向けることで、元の回答を単純化してくれたコメントのAnvakaに感謝します。

于 2010-03-12T22:03:04.860 に答える