2009-10-06 4 views
59

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

+28

Очень конструктивный вопрос !, Почему это было закрыто? –

+2

@gyozokudor: вопросы, требующие рекомендации для библиотек/инструментов, закрыты здесь ... Это политика, которая не была на месте в момент отправки вопроса. Если вы хотите обсудить эту политику, перейдите на meta.stackexchange.com. – liori

+11

Я не знаю, что с этим обсуждать, мне кажется очевидным, что такие вопросы должны быть разрешены. –

ответ

35

Проверьте проект SVG framework in C# and an SVG-GDI+ bridge.

Из приведенного выше веб-страницы ...

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

+4

+1 для вашего превосходного Google-fu. – MusiGenesis

+1

+1, Мой google-fu не нашел этого. – liori

+0

Это, по-видимому, главная страница проекта: http://www.jbrowse.com/svgnet/. Похоже, что библиотека не была разработана в течение 6 лет. Вероятно, я все еще проверю это. – liori

7
+0

-1, вопрос состоял в экспорте PNG из SVG. SVGPad является редактором, и это не относится к статье, ни приложение, ни библиотека не могут это сделать. (если это так, вы должны оставить больше, чем просто ссылку) – DevTheo

+0

@DevTheo: вы можете более внимательно прочитать вопрос и связанную статью. OP не пытается преобразовать PNG в SVG; OP имеет существующий код для рисования примитивов в форматах PNG и EMF и хочет сделать то же самое в формате SVG. Образец, с которым я связан, предоставляет код для выполнения именно этого. – MusiGenesis

+0

ОК, извините .. Я поставил свою проблему на вопрос .. извините .. и я не могу повторить голосование ... Я пропустил этот момент как-то .. – DevTheo

3

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

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

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

+4

Проблема - время: мы хотели бы потратить как можно меньше времени на эту задачу, а поддержка SVG для нас не очень важна. Поэтому мы ищем то, что можно было бы использовать в качестве замены на месте для GDI API ... или, по крайней мере, что-то, что не требовало бы большой адаптации. Ваше предложение уже было рассмотрено нами. – liori

+0

Я вижу. Тогда предложение SDX2000 является наиболее логичным подходом к этому (-. – Audrius

+7

Хорошо, я просто поставлю его на один год, чтобы я мог это реализовать. –

7

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

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

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

17

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

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

https://github.com/vvvv/SVG

Edit: Просто, чтобы вы знаете, по состоянию на декабрь 2014:

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

+2

Awesome! Я использовал оригинальный компонент SVG, затем нашел этот пост и встал в запуске с вашим обновленным компонентом за считанные секунды! –

Смежные вопросы