Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
开罗+;librsvg:在运行时强制绘制颜色的svg图标_Svg_Cairo_Librsvg - Fatal编程技术网

开罗+;librsvg:在运行时强制绘制颜色的svg图标

开罗+;librsvg:在运行时强制绘制颜色的svg图标,svg,cairo,librsvg,Svg,Cairo,Librsvg,我在应用程序中使用了一组svg图标,并使用librsvg绘制它们。这些图标都是单色黑色图形,我只能将它们绘制为黑色,因为这是svg文件中写入的颜色 有一种方法可以在运行时,在绘制图标之前选择图标的颜色(可能还有alpha通道),而无需为我需要的任何颜色制作专用svg文件?我是否可以让librsvg忽略svg文件中写入的颜色,而只使用我选择的颜色?或任何其他具有相同效果的解决方法 我正在考虑加载svg文件内容并在内存中修改颜色声明,它应该可以工作,但我正在寻找一种更干净的方法 谢谢。您可能需要监视

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

有一种方法可以在运行时,在绘制图标之前选择图标的颜色(可能还有alpha通道),而无需为我需要的任何颜色制作专用svg文件?我是否可以让librsvg忽略svg文件中写入的颜色,而只使用我选择的颜色?或任何其他具有相同效果的解决方法

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

谢谢。

您可能需要监视一种干净的方法来执行此操作。总之,librsvg需要一个API来让您传入一个额外的CSS样式表;通过这种方式,您的形状可以从CSS中获取颜色

提到了GTK破解这一问题的方法,您可以使用类似的方法。简而言之,它创建了一个包装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之后)。