web-dev-qa-db-fra.com

Dessiner SVG en .NET / C #?

Je voudrais générer un fichier SVG en utilisant C #. J'ai déjà du code pour les dessiner en PNG et EMF (en utilisant la classe standard du framework System.Drawing.Imaging.Metafile et ZedGraph ) Que pourriez-vous recommander de faire pour adapter ce code au SVG? De préférence, j'aimerais trouver une bibliothèque (gratuite ou non) qui imiterait l'interface System.Drawing.Graphics .

65
liori

Découvrez le framework SVG en C # et un pont SVG-GDI + .

De la page Web ci-dessus ...

Le pont SvgGdi est un ensemble de classes qui utilisent SvgNet pour traduire entre SVG et GDI +. Cela signifie que tout code qui utilise GDI + pour dessiner des graphiques peut également facilement sortir SVG, simplement en branchant l'objet SvgGraphics. Cet objet est exactement le même qu'un objet graphique .NET standard, mais crée une arborescence SVG. Même des choses comme les remplissages hachurés et les ancres de ligne sont implémentées.

38
Autodidact

Nous avons créé un fork public de la bibliothèque C # .NET SVG sur github.

Il est bien meilleur que celui que vous trouvez sur codeplex, jetez-y un œil et faites-le comme vous le souhaitez:

https://github.com/vvvv/SVG

Edit: Juste pour vous faire savoir, à partir de juin 2019:

Alors que d'autres semblent morts depuis des années, cela est toujours actif. Mais nous pourrions certainement utiliser l'aide d'autres développeurs.

24
thalm

J'ai utilisé celui-ci http://svg.codeplex.com/ et j'en suis assez satisfait. Il y a encore quelques bogues, vous devriez donc jeter un œil aux correctifs dans http://svg.codeplex.com/SourceControl/PatchList.aspx .

Lorsque je découvre des erreurs que je peux résoudre, je les poste directement là-bas. Mais il faut du temps pour être évalué par les gars là-bas. C'est une meilleure idée de jeter un œil aux patchs et de les appliquer vous-même.

La bibliothèque est raisonnablement suffisante pour la plupart des besoins habituels. pour des trucs vraiment fantaisistes, il faut améliorer la pensée ...

7
jdehaan

Comme SVG est fondamentalement un document XML - vous pouvez implémenter vous-même le "dessin". Vérifiez les spécifications sur W3C SVG spec . Je l'ai fait une fois pour générer des images de signature SVG, il n'a fallu que quelques heures et un firefox pour tester l'image générée.

Bien sûr, cela s'applique si vous générez une image à partir d'une entrée utilisateur ou si cela ne vous dérange pas de passer du temps à effectuer la conversion à partir d'un autre format d'image vectorielle.

P.S. vous pouvez créer votre propre wrapper pour imiter System.Drawing.Graphics, par ex. DrawLine () à ajouter au tampon interne et ainsi de suite.

3
Audrius