我可以轻松地在元素上添加填充(<path fill="#FF0000">
),但我的问题是,它并不总是路径元素,它也可以是<rect>
,<ellipse>
和等等。
但如果我想更改svg文件中所有元素的颜色怎么办?不管是什么类型的?
我的解决方案:
找到支持fill属性的所有元素,然后遍历它们。
只是在所有内容上加上填充标记,无论是什么标记,但并非所有标记都支持它,并且不会导致问题?
我不喜欢任何这些解决方案......第一个不是动态的,另一个不是动态的脏兮兮
我能在这里做些更聪明的事吗?我可以定义全局颜色或什么?或者svg.codeplex是否有一些我可以使用的功能(我找不到)?
答案 0 :(得分:4)
你试过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这是你第一颗子弹的答案。
答案 1 :(得分:2)
使用css设置颜色。如果从元素本身中删除填充样式,则只需添加
即可<style type="text/css">
<![CDATA[
* {
fill: #FF0000;
}
]]>
</style>
或者在外部样式表中,接受填充颜色的所有内容都将为红色。您可以使用document.styleSheets[1]
操纵样式