在.NET / C#中绘制SVG? [关闭]

问题描述 投票:64回答:4

我想用C#生成一个SVG文件。我已经有了用PNG和EMF格式绘制它们的代码(使用框架的标准类System.Drawing.Imaging.MetafileZedGraph)。您可以建议将该代码调整为SVG吗?我最好找一些模仿System.Drawing.Graphics界面的库(免费或不免费)。

c# svg vector-graphics
4个回答
38
投票

看看SVG framework in C# and an SVG-GDI+ bridge项目。

从上面的网页......

SvgGdi桥是一组使用SvgNet在SVG和GDI +之间进行转换的类。这意味着任何使用GDI +绘制图形的代码都可以轻松输出SVG,只需插入SvgGraphics对象即可。此对象与常规.NET Graphics对象完全相同,但会创建一个SVG树。甚至可以实现阴影填充和线锚等操作。


21
投票

我们在github上创建了一个C#.NET SVG库的公共分支。

它比你在codeplex上找到的要好得多,请你随便看看吧:

https://github.com/vvvv/SVG

编辑:只是为了让您知道,截至2014年12月:

虽然其他人多年来似乎已经死亡,但这仍然很活跃。但我们肯定可以使用其他开发人员的帮助。


7
投票

我使用了这个http://svg.codeplex.com/,我对此非常满意。还有一些错误,所以你应该看看http://svg.codeplex.com/SourceControl/PatchList.aspx中的补丁。

当我发现错误时我可以解决,我直接在那里发布。但是那里的人们需要花一些时间来评估。最好先查看补丁并自己应用它们。

图书馆足以满足大多数常见需求。对于真正的花哨的东西,它需要改进思想......


3
投票

由于SVG基本上是一个XML文档 - 您可以自己实现“绘图”。检查W3C SVG spec的规格。我做了一次生成SVG签名图像,所花了几个小时和一个firefox来测试生成的图像。

当然,如果您是从用户输入生成图像,或者如果您不介意花一些时间从另一个矢量图像格式进行转换,则这适用。

附:你可以创建自己的包装来模仿System.Drawing.Graphics,例如DrawLine()追加到内部缓冲区等等。

© www.soinside.com 2019 - 2024. All rights reserved.