我在我的应用程序中使用了一组svg图标,并使用librsvg绘制它们。这些图标都是单色的黑色绘图,我只能将它们绘制为黑色,因为这是svg文件中写入的颜色。
有一种方法可以在运行时选择图标的颜色(可能还有alpha通道),就在绘制它们之前,而不需要为我需要的任何颜色创建一个专用的svg文件?我可以让librsvg忽略svg文件中写的颜色,只使用我选择的颜色吗?或任何其他具有相同效果的变通方法?
我正在考虑加载svg文件内容并修改内存中的颜色声明,它应该可以工作,但我正在寻找一种更简洁的方法。
谢谢。
发布于 2019-06-21 07:04:30
您可能想要监控https://gitlab.gnome.org/GNOME/librsvg/issues/379,以获得一种简洁的方法。总之,librsvg需要一个API来让您传入一个额外的CSS样式表;这样,您的形状就可以从该CSS获得它们的颜色。
https://gitlab.gnome.org/GNOME/gtk/issues/1471提到了GTK解决这一问题的方法,您也许可以使用类似的方法。简而言之,它创建了一个包装SVG,如下所示:
<svg ...>
<style type="text/css">
... extra styling here ...
</style>
<xi:include href="... original SVG encoded as a data:URL ..."/>
</svg>(但请检查注释中的实际源代码以了解正确的语法!)
https://stackoverflow.com/questions/54498272
复制相似问题