首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >cairo + librsvg:在运行时绘制强制颜色的svg图标

cairo + librsvg:在运行时绘制强制颜色的svg图标
EN

Stack Overflow用户
提问于 2019-02-03 06:51:56
回答 1查看 132关注 0票数 1

我在我的应用程序中使用了一组svg图标,并使用librsvg绘制它们。这些图标都是单色的黑色绘图,我只能将它们绘制为黑色,因为这是svg文件中写入的颜色。

有一种方法可以在运行时选择图标的颜色(可能还有alpha通道),就在绘制它们之前,而不需要为我需要的任何颜色创建一个专用的svg文件?我可以让librsvg忽略svg文件中写的颜色,只使用我选择的颜色吗?或任何其他具有相同效果的变通方法?

我正在考虑加载svg文件内容并修改内存中的颜色声明,它应该可以工作,但我正在寻找一种更简洁的方法。

谢谢。

EN

回答 1

Stack Overflow用户

发布于 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,如下所示:

代码语言:javascript
复制
<svg ...>
  <style type="text/css">
    ... extra styling here ...
  </style>
  <xi:include href="... original SVG encoded as a data:URL ..."/>
</svg>

(但请检查注释中的实际源代码以了解正确的语法!)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54498272

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档