我想使用C#生成SVG文件。我已经有代码以PNG和EMF格式绘制它们(使用框架的标准类System.Drawing.Imaging.Metafile和ZedGraph)。您可以建议做什么以使该代码适应SVG?最好我想找到一些模仿System.Drawing.Graphics接口的库(免费或不收费)。
我想使用C#生成SVG文件。我已经有代码以PNG和EMF格式绘制它们(使用框架的标准类System.Drawing.Imaging.Metafile和ZedGraph)。您可以建议做什么以使该代码适应SVG?最好我想找到一些模仿System.Drawing.Graphics接口的库(免费或不收费)。
Answers:
在C#和SVG-GDI +桥项目中检查SVG框架。
从以上网页...
SvgGdi桥是使用SvgNet在SVG和GDI +之间转换的一组类。这意味着,任何使用GDI +绘制图形的代码都可以轻松地输出SVG,只需插入SvgGraphics对象即可。该对象与常规.NET Graphics对象完全相同,但是会创建SVG树。甚至可以实现阴影填充和线锚之类的东西。
我们在github上建立了C#.NET SVG库的公共分支。
与在codeplex上找到的代码相比,它有了很大的改进,请随意查看并进行分叉:
编辑: 只是为了让您知道,截至2019年6月:
尽管其他人似乎已经死亡多年,但这仍然很活跃。但是我们绝对可以使用其他开发人员的帮助。
我使用了这个http://svg.codeplex.com/,对此我感到非常满意。仍然有一些错误,因此您应该看看http://svg.codeplex.com/SourceControl/PatchList.aspx中的补丁。
当我发现错误时,我可以解决问题,然后将它们直接张贴在此处。但是那里的人需要花费一些时间来评估。最好看看补丁并自己应用。
该库足以满足大多数常规需求。对于真正花哨的东西,需要加以改进...
由于SVG本质上是XML文档-您可以自己实现“绘图”。检查W3C SVG规范中的规范。我曾经做过一次来生成SVG签名图像,只花了几个小时和一个Firefox来测试生成的图像。
当然,如果您是根据用户输入生成图像的,或者您不介意花费一些时间从另一种矢量图像格式进行转换,则这当然适用。
PS,您可以创建自己的包装器来模拟System.Drawing.Graphics,例如将DrawLine()附加到内部缓冲区等。