Frage

I wurde gefragt, ob es ein Werkzeug war ein Pfaddaten wie „M 0 0 10 10 l“, um es äquivalente Linie / Kurve Segmentcode zu konvertieren.

Zur Zeit bin ich mit:

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);

Es scheint mir, dass XamlParser Aufruf ist viel langsamer als explizit die Liniensegmente zu schaffen. viele Pfade von Hand jedoch Umwandlung ist sehr mühsam.

War es hilfreich?

Lösung

Dieses Programm wird die Konvertierung tun: http://stringtopathgeometry.codeplex.com/

Andere Tipps

Es gibt nichts eingebaute in C # oder VB-Code aus der Geometrie minilanguage zu erzeugen, aber man konnte man wie folgt erstellen:

  • Emit C # oder VB-Code für neue-ing ein PathGeometry up.
  • Anruf PathFigureCollection.Parse auf Ihrem Weg String. Dies wird eine PathFigureCollection Instanz zurück.
  • Iterate über die PathFigureCollection. Für jede Figur:
    • schreiben C # oder VB-Code für neue-ing ein PathFigure Objekt und Hinzufügen zu der PathGeometry.Figures Sammlung.
    • Iterate über die Segmente Sammlung Wert. Für jedes Segment analysiert seine Art und emit typabhängigen Code für neue-ing der entsprechende Art von PathSegment up, das Setzen von seinen Eigenschaften und den aktuellen PathFigure hinzuzufügen.

Ob dies mehr oder weniger mühsam als die Umwandlung der Pfade von Hand ist etwas, das nur Sie entscheiden können, obwohl ... es hängt davon ab, wie wahrscheinlich viele verschiedene Arten von Segment, das Sie brauchen, um Griff (das heißt, wie viele verschiedene Arten von Segment erscheinen in den Weg Strings), werden, da Sie separaten Code für LineSegments, ArcSegments zu schreiben, etc.

EDIT:. Dank Anvaka in den Kommentaren für die ursprüngliche Antwort zu vereinfachen, indem meine Aufmerksamkeit auf PathFigureCollection.Parse Zeichnung

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top