通过 C# 程序将 "rect" 元素添加到文档时出错
Error with adding "rect" element to document by c# program
我正在尝试通过 C# 控制台应用程序向 svg 文档添加一些 "rect" 元素。
"rect" 个元素正在添加,它们存在于 svg 文档的结构中,但它们是不可见的。
当我手动添加 "rect" 元素时,一切正常。
应用程序执行后的 Svg 图像
手动添加 "rect" 后的 Svg
有我的代码
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;
}
你有什么建议或方法来解决这个问题吗?如果你这样做,请告诉我。任何帮助表示赞赏
您需要在 SVG 命名空间中创建矩形,即
XNamespace namespace = "http://www.w3.org/2000/svg";
var damage = new XElement(namespace + "rect", ...
我正在尝试通过 C# 控制台应用程序向 svg 文档添加一些 "rect" 元素。 "rect" 个元素正在添加,它们存在于 svg 文档的结构中,但它们是不可见的。
当我手动添加 "rect" 元素时,一切正常。
应用程序执行后的 Svg 图像
手动添加 "rect" 后的 Svg
有我的代码
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;
}
你有什么建议或方法来解决这个问题吗?如果你这样做,请告诉我。任何帮助表示赞赏
您需要在 SVG 命名空间中创建矩形,即
XNamespace namespace = "http://www.w3.org/2000/svg";
var damage = new XElement(namespace + "rect", ...