【问题标题】:Change color of all elements on any svg file更改任何 svg 文件上所有元素的颜色
【发布时间】:2012-08-06 21:32:25
【问题描述】:

我可以轻松地在元素上添加填充 (<path fill="#FF0000">),但我的问题是,它并不总是路径元素,它也可以是 <rect><ellipse> 等等。

但是如果我想更改 svg 文件中所有元素的颜色怎么办?不管是什么类型的?

我的解决方案:

  • 找到所有支持填充属性的元素,然后循环遍历它们。

  • 只是给所有东西打个填充标签,不管是什么标签,但不是所有标签都支持,不会出问题吗?

我不喜欢这些解决方案中的任何一个...第一个不是动态的,另一个不是动态的很脏——

我可以在这里做一些更聪明的事情吗?我可以定义全局颜色吗?还是svg.codeplex 有一些我可以使用的功能(我找不到)?

【问题讨论】:

    标签: c# xml svg


    【解决方案1】:

    您尝试过 XPath 吗? (使用 System.Xml.XPath)

    string newColor = "#123456";
    XElement root = XElement.Load(file);
    var colors = root.XPathSelectElements("//*[@fill]");
    foreach(XElement node in colors)
        node.Attribute("fill").Value = newColor;
    

    PS 这是对你第一个项目符号的回答。

    【讨论】:

      【解决方案2】:

      使用 css 设置颜色。如果您从元素本身中删除填充样式,则只需添加

      <style type="text/css">
        <![CDATA[
          * {
            fill: #FF0000;
          }
        ]]>
      </style>
      

      或者在外部样式表中,接受填充颜色的所有内容都是红色的。您可以使用document.styleSheets[1] 操作样式

      【讨论】:

      • 谢谢。但问题是。我需要在服务器上做。但是这个css代码和我的第二个脏解决方案一样吗?
      • 所以在服务器上用你想要的任何填充创建样式元素。
      猜你喜欢
      • 2020-10-31
      • 2018-01-25
      • 1970-01-01
      • 2020-04-05
      • 1970-01-01
      • 1970-01-01
      • 2016-08-15
      • 2020-10-04
      相关资源
      最近更新 更多