webentwicklung-frage-antwort-db.com.de

Zeichnen von SVG in .NET / C #?

Ich möchte eine SVG-Datei mit C # generieren. Ich habe bereits Code, um sie in PNG- und EMF -Formaten zu zeichnen (unter Verwendung der Framework-Standardklasse System.Drawing.Imaging.Metafile und ZedGraph ) Was können Sie empfehlen, um diesen Code an SVG anzupassen? Am liebsten würde ich eine Bibliothek (kostenlos oder nicht) finden, die die Schnittstelle System.Drawing.Graphics nachahmt.

65
liori

Schauen Sie sich das SVG-Framework in C # und eine SVG-GDI + -Brücke -Projekt an.

Von der obigen Webseite ...

Die SvgGdi-Brücke besteht aus einer Reihe von Klassen, die SvgNet zur Übersetzung zwischen SVG und GDI + verwenden. Dies bedeutet, dass jeder Code, der GDI + zum Zeichnen von Grafiken verwendet, auch SVG problemlos ausgeben kann, indem einfach das SvgGraphics-Objekt eingefügt wird. Dieses Objekt ist mit einem regulären .NET-Grafikobjekt identisch, erstellt jedoch einen SVG-Baum. Sogar Dinge wie Schraffuren und Linienanker werden implementiert.

38
Autodidact

Wir haben einen öffentlichen Zweig der C # .NET SVG-Bibliothek auf Github erstellt.

Es ist viel besser als das, was Sie bei Codeplex finden. Schauen Sie es sich bitte an und teilen Sie es nach Ihren Wünschen mit:

https://github.com/vvvv/SVG

Edit: Nur um Sie wissen zu lassen, ab Juni 2019:

Während andere seit Jahren tot scheinen, ist dies immer noch aktiv. Aber wir könnten definitiv Hilfe von anderen Entwicklern gebrauchen.

24
thalm

Ich habe dieses verwendet http://svg.codeplex.com/ und bin ziemlich zufrieden damit. Es gibt immer noch einige Fehler, daher sollten Sie sich die Patches in http://svg.codeplex.com/SourceControl/PatchList.aspx ansehen.

Wenn ich Fehler entdecke, die ich lösen kann, poste ich sie direkt dort. Aber es braucht einige Zeit, um von den Jungs dort bewertet zu werden. Es ist eine bessere Idee, sich die Patches anzusehen und sie selbst anzuwenden.

Die Bibliothek ist für die meisten üblichen Bedürfnisse ausreichend. Für wirklich ausgefallene Sachen muss es verbessert werden.

7
jdehaan

Da SVG im Grunde genommen ein XML-Dokument ist, können Sie das "Zeichnen" selbst implementieren. Überprüfen Sie die Spezifikationen unter W3C SVG-Spezifikation . Ich habe es einmal gemacht, um SVG-Signaturbilder zu generieren. Es dauerte nur ein paar Stunden und ein Firefox, um das generierte Bild zu testen.

Dies gilt natürlich, wenn Sie ein Bild aus Benutzereingaben generieren oder wenn es Ihnen nichts ausmacht, einige Zeit mit der Konvertierung von einem anderen Vektorbildformat zu verbringen.

P.S. Sie können Ihren eigenen Wrapper erstellen, um System.Drawing.Graphics nachzuahmen, z. DrawLine () zum Anhängen an den internen Puffer und so weiter.

3
Audrius