Подтвердить что ты не робот

Преобразование данных пути SVG в данные GDI + GraphicsPath

Есть ли простой способ преобразования тега пути SVG в С# System.Drawing.Drawing2D.GraphicsPath? Они оба тесно связаны, и я надеялся, что будет легко преобразовать данные пути SVG в точки GraphicsPath.

4b9b3361

Ответ 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 +.

Удачи.