如何(如果可能的话)我可以使用C#创建SVG图像吗?我希望获取一个SVG,在其上覆盖另一个SVG,并将其另存为第三个SVG图像。
在我的具体情况下,我允许我的软件模块为文件夹提供图标。当包含的数据中存在错误时,我想在文件夹图标上叠加警告或错误图标。
答案 0 :(得分:1)
SVG是一种非常简单的文本格式,甚至比HTML更简单。覆盖SVG是XML库的一项工作。您可以打开它并将每个节点从一个文件附加到另一个文件。
试试这两个文本文件:
打开第一个,复制<svg>...</svg>
的内容,粘贴到另一个文件的末尾(在结束</svg>
标记之前)。您可以在某些编辑器或验证器中检查结果只是一个非常精细的SVG文件。
使用System.Xml
或System.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更改这些内容以获得正确的结果。