Question

Je me demande s'il y avait un outil pour convertir des données de chemin comme « M 0 0 l 10 10 » à son code de segment de ligne / courbe équivalente.

Actuellement, je suis en utilisant:

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

Il me semble que l'appel XamlParser est beaucoup plus lent que de créer explicitement les segments de ligne. Cependant la conversion d'un grand nombre de chemins à la main est très fastidieux.

Était-ce utile?

La solution

Ce programme fera la conversion: http://stringtopathgeometry.codeplex.com/

Autres conseils

Il n'y a rien intégré pour générer C # ou VB code de la minilanguage géométrie, mais vous pouvez en créer un comme suit:

  • Emit code C # ou VB pour le nouveau-ing un PathGeometry.
  • Appel PathFigureCollection.Parse sur votre chaîne de chemin. Ceci renvoie une instance de PathFigureCollection.
  • itérer sur la PathFigureCollection. Pour chaque figure:
    • Dressez code C # ou VB pour nouveau-ing un objet PathFigure et l'ajouter à la collection PathGeometry.Figures.
    • itérer sur la collection des segments de la figure. Pour chaque segment, analyser son type et émettent code dépendant de type pour les nouveaux-ing le type approprié de PathSegment, en définissant ses propriétés et l'ajouter à la PathFigure actuelle.

Que ce soit plus ou moins fastidieux que de convertir les chemins à la main est quelque chose que vous pouvez décider, mais ... cela dépend probablement de combien de différents types de segment que vous devez gérer (combien différents types de segments apparaissent dans vos chaînes de chemin), puisque vous devrez écrire un code séparé pour LineSegments, ArcSegments, etc.

EDIT:. Merci à Anvaka dans les commentaires pour simplifier la réponse originale en attirant mon attention sur PathFigureCollection.Parse

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top