我想用C#生成一个SVG文件。我已经有了用PNG和EMF格式绘制它们的代码(使用框架的标准类System.Drawing.Imaging.Metafile和ZedGraph)。您可以建议将该代码调整为SVG吗?我最好找一些模仿System.Drawing.Graphics界面的库(免费或不免费)。
看看SVG framework in C# and an SVG-GDI+ bridge项目。
从上面的网页......
SvgGdi桥是一组使用SvgNet在SVG和GDI +之间进行转换的类。这意味着任何使用GDI +绘制图形的代码都可以轻松输出SVG,只需插入SvgGraphics对象即可。此对象与常规.NET Graphics对象完全相同,但会创建一个SVG树。甚至可以实现阴影填充和线锚等操作。
我们在github上创建了一个C#.NET SVG库的公共分支。
它比你在codeplex上找到的要好得多,请你随便看看吧:
编辑:只是为了让您知道,截至2014年12月:
虽然其他人多年来似乎已经死亡,但这仍然很活跃。但我们肯定可以使用其他开发人员的帮助。
我使用了这个http://svg.codeplex.com/,我对此非常满意。还有一些错误,所以你应该看看http://svg.codeplex.com/SourceControl/PatchList.aspx中的补丁。
当我发现错误时我可以解决,我直接在那里发布。但是那里的人们需要花一些时间来评估。最好先查看补丁并自己应用它们。
图书馆足以满足大多数常见需求。对于真正的花哨的东西,它需要改进思想......
由于SVG基本上是一个XML文档 - 您可以自己实现“绘图”。检查W3C SVG spec的规格。我做了一次生成SVG签名图像,所花了几个小时和一个firefox来测试生成的图像。
当然,如果您是从用户输入生成图像,或者如果您不介意花一些时间从另一个矢量图像格式进行转换,则这适用。
附:你可以创建自己的包装来模仿System.Drawing.Graphics,例如DrawLine()追加到内部缓冲区等等。