在.NET / C#中绘制SVG?

我想用C#生成一个SVG文件。 我已经有代码来绘制他们在PNG和EMF格式(使用框架的标准类System.Drawing.Imaging.Metafile和ZedGraph )。 你可以推荐做些什么来使代码适应SVG? 最好我想find一些库(免费或不会),将模仿System.Drawing.Graphics接口。

查看C#中的SVG框架和SVG-GDI +桥项目。

从上面的网页…

SvgGdi桥是一组使用SvgNet在SVG和GDI +之间转换的类。 这意味着任何使用GDI +绘制graphics的代码都可以轻松地输出SVG,只需插入SvgGraphics对象即可。 该对象与普通的.NETgraphics对象完全相同,但创build了一个SVG树。 即使是像孵化的填充和线锚也是实现的。

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

它比你在codeplex上find的那个好很多,请看一下,然后按照你的喜好去分叉:

https://github.com/vvvv/SVG

编辑:只是让你知道,截至2014年12月:

虽然其他人似乎已经死了多年,这仍然是积极的。 但我们绝对可以使用其他开发人员的帮助。

我用这个http://svg.codeplex.com/ ,我对此非常满意。 仍然有一些错误,所以你应该看看在http://svg.codeplex.com/SourceControl/PatchList.aspx修补程序。;

当我发现错误,我可以解决我直接发布在那里。 但是那里的人需要一些时间来评估。 查看这些补丁并自行应用它是一个更好的主意。

图书馆对于大多数通常的需求来说是相当充足的。 对于真正花哨的东西,它需要改进思想… … –

由于SVG基本上是一个XML文档 – 您可以自己实现“绘图”。 检查W3C SVG规范的规格 。 我做了一次生成SVG签名图像,只花了几个小时,用Firefox来testing生成的图像。

当然,这适用于从用户input生成图像的情况,或者如果您不介意花费一些时间从其他vector图像格式进行转换。

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