it-swarm.com.ru

Рисование SVG в .NET / C #?

Я хотел бы создать файл SVG с использованием C #. У меня уже есть код для рисования их в форматах PNG и EMF (с использованием стандартного класса фреймворка System.Drawing.Imaging.Metafile и ZedGraph ). Что бы вы могли порекомендовать сделать, чтобы адаптировать этот код к SVG? Желательно, чтобы я нашел библиотеку (бесплатную или нет), которая имитировала бы интерфейс System.Drawing.Graphics .

64
liori

Ознакомьтесь с SVG Framework в C # и SVG-GDI + bridge проект.

С вышеуказанной веб-страницы ...

Мост SvgGdi - это набор классов, которые используют SvgNet для преобразования между SVG и GDI +. Это означает, что любой код, использующий GDI + для рисования графики, также может легко выводить SVG, просто подключив объект SvgGraphics. Этот объект точно такой же, как обычный объект .NET Graphics, но создает дерево SVG. Реализованы даже такие вещи, как заштрихованные заливки и линейные анкеры.

38
Autodidact

Мы сделали публичную ветвь библиотеки C # .NET SVG на github.

Он значительно улучшен по сравнению с тем, что вы найдете в codeplex, пожалуйста, посмотрите и раскройте его так, как вам нравится:

https://github.com/vvvv/SVG

Редактировать: Просто чтобы сообщить вам, по состоянию на июнь 2019 года:

В то время как другие кажутся мертвыми с годами, это все еще активно Но мы определенно могли бы использовать некоторую помощь от других разработчиков.

21
thalm

Я использовал этот http://svg.codeplex.com/ , и я вполне доволен этим. Все еще есть некоторые ошибки, поэтому вы должны взглянуть на патчи в http://svg.codeplex.com/SourceControl/PatchList.aspx .

Когда я обнаруживаю ошибки, которые могу решить, я публикую их прямо там. Но ребятам там нужно время, чтобы их оценили. Лучше взглянуть на патчи и применить их самостоятельно.

Библиотека достаточно достаточна для большинства обычных нужд. для действительно причудливых вещей, это должно быть улучшено мысль ...

7
jdehaan

Поскольку SVG - это, по сути, документ XML, вы можете реализовать "рисование" самостоятельно. Проверьте спецификации в W3C SVG spec . Я сделал это один раз, чтобы сгенерировать изображения SVG-подписи, всего лишь пару часов и Firefox для проверки сгенерированного изображения.

Конечно, это применимо, если вы генерируете изображение из пользовательского ввода или если вы не против потратить некоторое время на преобразование из другого формата векторного изображения.

Постскриптум Вы можете создать свою собственную оболочку для имитации System.Drawing.Graphics, например DrawLine () для добавления во внутренний буфер и так далее.

3
Audrius