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


67

我想使用C#生成SVG文件。我已经有代码以PNG和EMF格式绘制它们(使用框架的标准类System.Drawing.Imaging.MetafileZedGraph)。您可以建议做什么以使该代码适应SVG?最好我想找到一些模仿System.Drawing.Graphics接口的库(免费或不收费)。



2
@liori,您能否重新关注问题,以免提出建议?在我看来,第一部分(“我已经有代码”)可以轻松扩展为主题。也许打开多彩讨论第一。您读过编程是很难的。一起去购物吧!
brasofilo

@b__:我不想,这个问题已经有了一些得到很多票的答案。如果有的话,一个新的问题将更可取。而且,实际上,我对答案不再感兴趣,我想要进行SVG的项目不再活动,也无法访问其任何代码……
liori

是的,这是主要的障碍;编辑必须不会使A无效。OTOH,不会成为第一个删除购物问题的案例……
brasofilo

Answers:


40

在C#和SVG-GDI +桥项目中检查SVG框架

从以上网页...

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


这似乎是主要的项目页面:jbrowse.com/svgnet。图书馆似乎已经六年没有开发了。我可能仍会检查它。
liori

10
指出那里的站点已经死了。由于一切BSD许可证创建一个GitHub库为他们:github.com/monoman/SvgNet
Monoman

这已经很老了,不应该再考虑了。请参阅下面有关正在积极开发中的库的答案。
thalm

34

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

与在codeplex上找到的代码相比,它有了很大的改进,请随意查看并进行分叉:

https://github.com/vvvv/SVG

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

尽管其他人似乎已经死亡多年,但这仍然很活跃。但是我们绝对可以使用其他开发人员的帮助。


7

我使用了这个http://svg.codeplex.com/,对此我感到非常满意。仍然有一些错误,因此您应该看看http://svg.codeplex.com/SourceControl/PatchList.aspx中的补丁。

当我发现错误时,我可以解决问题,然后将它们直接张贴在此处。但是那里的人需要花费一些时间来评估。最好看看补丁并自己应用。

该库足以满足大多数常规需求。对于真正花哨的东西,需要加以改进...


3

由于SVG本质上是XML文档-您可以自己实现“绘图”。检查W3C SVG规范中的规范。我曾经做过一次来生成SVG签名图像,只花了几个小时和一个Firefox来测试生成的图像。

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

PS,您可以创建自己的包装器来模拟System.Drawing.Graphics,例如将DrawLine()附加到内部缓冲区等。


4
问题在于时间:我们希望在此任务上花费尽可能少的时间,而SVG支持对我们而言并不是真正重要的。因此,我们正在寻找可以替代GDI API的东西,或者至少不需要太多修改的东西。我们也已经考虑了您的建议。
liori

我懂了。那么SDX2000建议是解决此问题的最合乎逻辑的方法(
-。– Audrius

9
好吧,我将放假一年,以便我可以实施。
Martin Murphy
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.