通过C#程序在文档中添加“ rect”元素时出错

时间:2019-05-14 12:24:02

标签: c# svg linq-to-xml

我正在尝试通过c#控制台应用程序向svg文档中添加一些“矩形”元素。 正在添加“矩形”元素,它们存在于svg文档的结构中,但不可见。

当我手动添加“ rect”元素时,一切正常。

应用执行后的SVG图像 app result

手动添加“矩形”后的SVG manual result

有我的代码

    public static MemoryStream Draw(Stream stream)

    {
        var outputStream = new MemoryStream();

        var svgDocument = XDocument.Load(stream);

        if (svgDocument.Root != null)
        {
            var gElements = svgDocument.Root.Elements("{http://www.w3.org/2000/svg}g");

            var damageLayer = gElements.FirstOrDefault(x => x.Attribute("id")?.Value == "Damages");

            var damage = new XElement("rect", new XAttribute("x", 205), new XAttribute("y", 205), new XAttribute("width", 15), new XAttribute("height", 15));

            damageLayer.Add(damage);
        }

        svgDocument.Save(outputStream);

        return outputStream;
    }

您有解决此问题的建议或方法吗?如果您愿意,请告诉我。任何帮助表示赞赏

1 个答案:

答案 0 :(得分:1)

您需要在SVG命名空间中创建rect,即

XNamespace namespace = "http://www.w3.org/2000/svg";
var damage = new XElement(namespace + "rect", ...