Есть ли простой способ преобразования тега пути SVG в С# System.Drawing.Drawing2D.GraphicsPath? Они оба тесно связаны, и я надеялся, что будет легко преобразовать данные пути SVG в точки GraphicsPath.
Преобразование данных пути SVG в данные GDI + GraphicsPath
Ответ 1
Этот проект SVG предоставляет решение следующим образом:
var pathData = ...;
var graphicsPath = new GraphicsPath();
foreach (var segment in SvgPathBuilder.Parse(pathData))
segment.AddToPath(graphicsPath);
graphics.DrawPath(Pens.Black, graphicsPath);
Он доступен как пакет NuGet через:
PM> Install-Package Svg
Ответ 2
Нет простого способа, хотя пути SVG и GraphicsPath
выглядят одинаково и служат одной и той же цели, существуют некоторые различия в том, как вещи указываются и обрабатываются. Один пример: определение SVG-дуги отличается от того, как GraphicsPath
определяет дуги, поэтому для его преобразования вам нужно сделать немного тригонометрии.
Также посмотрите Рисование SVG в .NET/С#?
Ответ 3
Я надеюсь, что это не поздно! Посмотрите исходный код программы просмотра svg из AGG: http://www.antigrain.com/svg/index.html
Исходный код находится на С++ и использует графический движок AGG, но его легко перевести на GDI+. Он также обрабатывает преобразование SVG Arc в дугу Безье, которое затем можно использовать с GDI +.
Удачи.