我想使用 librsvg 来渲染一些 svg 文件的一部分。当我使用这些代码时:
try {
handle = new Rsvg.Handle.from_file(inputtext);
} catch (GLib.Error e) {error ("%s", e.message);}
if(handle.has_sub("##sub0") && handle.has_sub("##sub1"))
{sub=0; stdout.printf("found sub0 and sub1.\n");}
什么也没发生。当然 id="sub0" 和 id="sub1" 在 svg 文件中,并且处理也可以工作(可以正确渲染整个 svg)。
id (str or None) -- SVG 中元素的 id,或 None 以呈现整个 SVG。例如,如果您想要渲染一个名为“layer1”的层,请将“##layer1”作为 id 传递。
根据https://lazka.github.io/pgi-docs/Rsvg-2.0/classes/Handle.html,搜索 svg 中的 id 需要以“##”为前缀。
如果我使用 handle.has_sub("sub0"),代码仍然没有工作。