我在我的应用程序中使用了一组svg图标,我正在使用librsvg绘制它们。这些图标都是单色黑色绘图,我只能将它们绘制为黑色,因为这是 svg 文件中写入的颜色。
有一种方法可以在运行时选择图标的颜色(可能还有 alpha 通道),而无需为我需要的任何颜色制作专用的 svg 文件?我可以让 librsvg 忽略 svg 文件中写入的颜色并只使用我选择的颜色吗?还是任何其他具有相同效果的解决方法?
我正在考虑加载 svg 文件内容并在内存中修改颜色声明,它应该可以工作,但我正在寻找一种更清洁的方法。
谢谢。
您可能需要监视 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>
(但请检查注释中的实际源代码以获取正确的语法!