通过将一个SVG图标叠加到另一个上来使用C#创建SVG

时间:2014-01-05 23:16:24

标签: c# svg

如何(如果可能的话)我可以使用C#创建SVG图像吗?我希望获取一个SVG,在其上覆盖另一个SVG,并将其另存为第三个SVG图像。

在我的具体情况下,我允许我的软件模块为文件夹提供图标。当包含的数据中存在错误时,我想在文件夹图标上叠加警告或错误图标。

2 个答案:

答案 0 :(得分:1)

SVG是一种非常简单的文本格式,甚至比HTML更简单。覆盖SVG是XML库的一项工作。您可以打开它并将每个节点从一个文件附加到另一个文件。

试试这两个文本文件:

打开第一个,复制<svg>...</svg>的内容,粘贴到另一个文件的末尾(在结束</svg>标记之前)。您可以在某些编辑器或验证器中检查结果只是一个非常精细的SVG文件。

使用System.XmlSystem.Xml.Linq从C#代码处理它。此外,您可以添加新节点,编辑宽度,高度,颜色等属性...如果您需要:

<svg width="637" height="637">
   <path style="fill:white" d="... "/>
   ...
</svg>

玩得开心。

答案 1 :(得分:1)

我建议使用SVG Rendering Engine来执行此操作。创建第三个文档,并将两个给定的svgs一个接一个地放入其中。 (将svg文档相互嵌套完全有效):

var icon = SvgDocument.Open(...);
var overlayIcon = SvgDocument.Open(...);

var overlayed = new SvgDocument();

overlayed.Children.Add(icon);
overlayed.Children.Add(overlayIcon);

overlayed.Write(...); // saving

注意:检查叠加图标的大小,视图等,您可能需要通过SvgDocument.Width,SvgDocument.Height,SvgDocument.ViewBox更改这些内容以获得正确的结果。