Pregunta

Me preguntaba si había una herramienta para convertir un conjunto de datos de ruta como "M 0 0 L 10 10" a su código segmento de línea / curva equivalente.

Actualmente estoy usando:

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

Me parece que llamar XamlParser es mucho más lento que crear explícitamente los segmentos de línea. Sin embargo la conversión de una gran cantidad de caminos a mano es muy tedioso.

¿Fue útil?

Solución

Este programa va a hacer la conversión: http://stringtopathgeometry.codeplex.com/

Otros consejos

No hay nada incorporada para generar código C # o VB de la minilenguaje geometría, pero se puede crear uno de la siguiente manera:

  • Emitir código C # o VB por nuevo ing un PathGeometry.
  • PathFigureCollection.Parse de llamadas en su cadena de ruta. Esto devolverá una instancia PathFigureCollection.
  • iterar sobre la PathFigureCollection. Para cada figura:
    • Escriba código C # o VB para nueva-ción de un objeto PathFigure y agregarlo a la colección PathGeometry.Figures.
    • iterar sobre la colección segmentos de la figura. Para cada segmento, analizar su tipo y emiten código de tipo dependiente de nuevo-ción hasta el tipo apropiado de PathSegment, el establecimiento de sus propiedades y de añadir a la PathFigure actual.

Si esto es más o menos tedioso que la conversión de los caminos a mano es algo que sólo usted puede decidir, aunque ... que probablemente depende del número de diferentes tipos de segmento que necesita para manejar (es decir, la cantidad de diferentes tipos de segmento aparecen en sus cadenas de ruta), ya que tendrá que escribir código separado para LineSegments, ArcSegments, etc.

EDIT:. Gracias a Anvaka de comentarios para simplificar la respuesta original por llamar mi atención sobre PathFigureCollection.Parse

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top