开罗+;librsvg:在运行时强制绘制颜色的svg图标
我在应用程序中使用了一组svg图标,并使用librsvg绘制它们。这些图标都是单色黑色图形,我只能将它们绘制为黑色,因为这是svg文件中写入的颜色 有一种方法可以在运行时,在绘制图标之前选择图标的颜色(可能还有alpha通道),而无需为我需要的任何颜色制作专用svg文件?我是否可以让librsvg忽略svg文件中写入的颜色,而只使用我选择的颜色?或任何其他具有相同效果的解决方法 我正在考虑加载svg文件内容并在内存中修改颜色声明,它应该可以工作,但我正在寻找一种更干净的方法 谢谢。您可能需要监视一种干净的方法来执行此操作。总之,librsvg需要一个API来让您传入一个额外的CSS样式表;通过这种方式,您的形状可以从CSS中获取颜色 提到了GTK破解这一问题的方法,您可以使用类似的方法。简而言之,它创建了一个包装SVG,如下所示:开罗+;librsvg:在运行时强制绘制颜色的svg图标,svg,cairo,librsvg,Svg,Cairo,Librsvg,我在应用程序中使用了一组svg图标,并使用librsvg绘制它们。这些图标都是单色黑色图形,我只能将它们绘制为黑色,因为这是svg文件中写入的颜色 有一种方法可以在运行时,在绘制图标之前选择图标的颜色(可能还有alpha通道),而无需为我需要的任何颜色制作专用svg文件?我是否可以让librsvg忽略svg文件中写入的颜色,而只使用我选择的颜色?或任何其他具有相同效果的解决方法 我正在考虑加载svg文件内容并在内存中修改颜色声明,它应该可以工作,但我正在寻找一种更干净的方法 谢谢。您可能需要监视
<svg ...>
<style type="text/css">
... extra styling here ...
</style>
<xi:include href="... original SVG encoded as a data:URL ..."/>
</svg>
... 额外的样式在这里。。。
(但请检查注释中的实际源代码以了解正确的语法!)我是否正确理解图标是“此处无任何内容”(又名:透明)还是“此处为黑色”(因此此处完全没有透明度)?如果是这样,您可以通过
cairo\u mask\u surface
在cairo中将图标用作遮罩(在通过librsvg将其绘制到某个临时cairo surface之后)。