在.NET/C#中绘制SVG?

71

http://www.codeproject.com/KB/cs/svgpad.aspx - MusiGenesis
2
@liori,你能否重新聚焦问题,不要寻求推荐吗?对我来说,它看起来像是第一部分(“我已经有代码”)可以很容易地扩展成主题。也许首先开启一个元讨论。你读过《编程很难。我们去购物!》吗? - brasofilo
@b__: 我不想这样做,因为这个问题已经有了一些得到很多赞的答案。如果有什么需要的话,一个新的问题会更好。而且,实际上,我对答案也不再感兴趣了,我想要使用SVG的项目已经不再活跃,我也无法访问其中的任何代码... - liori
是的,这是主要的障碍;编辑必须使A的无效化。另一方面,购物问题被删除也不是第一次。 - brasofilo
4个回答

42

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

从以上网页中得知......

SvgGdi桥接是一组类,使用SvgNet在SVG和GDI+之间进行翻译。这意味着任何使用GDI+绘制图形的代码都可以通过插入SvgGraphics对象轻松输出SVG。该对象与常规.NET Graphics对象完全相同,但创建了一个SVG树。甚至线条填充和线锚等功能也已实现。


这似乎是主项目页面:http://www.jbrowse.com/svgnet/。看起来该库已经有6年没有更新了。我可能还是会去查看一下。 - liori
10
那些网址已经失效。由于所有内容都遵循BSD许可协议,我已经在GitHub上为它们创建了一个仓库:https://github.com/monoman/SvgNet。 - Monoman
这已经相当老了,不应再考虑使用。请参见下面的答案,其中介绍了一个正在积极开发中的库。 - thalm

37
我们在Github上公开了C# .NET SVG库的分支版本。相比于Codeplex上的那个版本,它有很多改进。请查看并随意fork它:

https://github.com/svg-net/SVG

编辑: 仅供您参考,截至2021年1月:

虽然其他项目已经死亡多年,但这个项目仍然活跃。但我们肯定需要其他开发人员的帮助。


8
我使用了这个http://svg.codeplex.com/,并且我对它感到非常满意。它仍然存在一些错误,所以你应该查看http://svg.codeplex.com/SourceControl/PatchList.aspx中的补丁。

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

这个库对于大多数常规需求来说已经足够了,对于一些很奇特的东西,还需要改进……


4
作为SVG基本上是一个XML文档——你可以自己实现“绘图”。请查看W3C SVG规范。我曾经这样做过,生成SVG签名图片只需要几个小时和一个Firefox来测试生成的图片。
当然,如果你正在从用户输入生成图像,或者不介意花一些时间将其从另一种矢量图像格式转换过来,那么这也适用。
提示:你可以创建自己的包装器来模仿System.Drawing.Graphics,例如DrawLine()来附加到内部缓冲区等。

4
问题在于时间:我们希望在这个任务上花费的时间越少越好,而SVG支持对我们来说并不是非常重要。因此,我们正在寻找一些可以作为GDI API的替代品的东西...或者至少不需要太多调整的东西。我们已经考虑过您的建议了。 - liori
我明白了。那么SDX2000的建议是最合乎逻辑的方法。 - Audrius
9
好的,我会申请一年的休假,这样我就能实施那个计划。 - Martin Murphy

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接