Pregunta

Quiero la PathGeometry que constan de segmento.

Por lo tanto, yo uso este primer código pero de error.

PathGeometry temp = (PathGeometry)Geometry.Parse(
            "<PathGeometry.Figures>" +
                "<PathFigure StartPoint=\"193.5,283.5\" IsClosed=\"True\">" +
                    "<PathFigure.Segments>" +
                        "<LineSegment Point=\"418.5,283.5\" />" +
                        "<LineSegment Point=\"418.5,508.5\" />" +
                        "<LineSegment Point=\"193.5,508.5\" />" +
                        "<LineSegment Point=\"193.5,283.5\" />" +
                    "</PathFigure.Segments>" +
                "</PathFigure>" +
            "</PathGeometry.Figures>");

Si utilizo este segundo código, no es error, pero no consta de segmento. El resultado será PolyLineSegment pero quiero segmento.

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

¿Cómo convierto XAML de WPF PathGeometry a PathGeometry?

Gracias

¿Fue útil?

Solución

Su código para analizar el XAML no es correcta, es necesario utilizar un lector XAML y emitir el resultado al tipo requerido. por ejemplo:.

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

Si está utilizando código subyacente, ¿hay alguna razón se quiere analizar un fragmento de XAML? Puede crear una ruta mediante programación de la siguiente manera:

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;

Un camino se compone de una geometría, que se compone de las figuras, que se componen de segmentos!

Si desea utilizar los datos de la trayectoria simplificados en código detrás se puede utilizar un convertidor de valor universal:

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

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