c# - Convirtiendo datos de ruta SVG en datos GDI+GraphicsPath
(3)
¿Hay alguna manera fácil de convertir una etiqueta de ruta SVG en un C # System.Drawing.Drawing2D.GraphicsPath? Ambos están estrechamente relacionados y esperaba que hubiera una fácil conversión de los datos de ruta SVG en GraphicsPath Points.
¡Espero que esto no sea tarde! Consulte el código fuente del programa svg viewer de AGG: http://www.antigrain.com/svg/index.html
El código fuente está en C ++ y usa el motor de gráficos AGG, pero es fácil de traducir a GDI +. También maneja la conversión de SVG Arc en un Bezier Arc que luego se puede usar con GDI +.
Buena suerte
Este proyecto SVG proporciona una solución de la siguiente manera:
var pathData = ...;
var graphicsPath = new GraphicsPath();
foreach (var segment in SvgPathBuilder.Parse(pathData))
segment.AddToPath(graphicsPath);
graphics.DrawPath(Pens.Black, graphicsPath);
Está disponible como un paquete NuGet a través de:
PM> Install-Package Svg
No hay una manera fácil, aunque las rutas SVG y GraphicsPath
son similares y tienen el mismo propósito, existen algunas diferencias en cómo se especifican y manejan las cosas. Un ejemplo: la definición de arco SVG es diferente de cómo GraphicsPath
define los arcos, por lo que tendrá que hacer un poco de trigonometría para convertirlo.
También echa un vistazo a Drawing SVG in .NET / C #?