如何让SVG解析器呈现单个组元素?

时间:2012-03-07 00:03:46

标签: javascript html5 canvas svg

我有一张代表一副牌的SVG文件。每张卡都是唯一的组和命名(即3_hearts)。现在我希望能够将其中一张卡片渲染到画布上。这个stackoverflow用户处于相同的情况,但在python中:How do I render *parts* of a svg file?

我正在使用一个名为http://code.google.com/p/canvg/的库,它提供了一个接口,以最可取的方式将SVG直接渲染到画布:

var c = document.getElementById('canvas');
var ctx = c.getContext('2d');
ctx.drawSvg(SVG_XML_OR_PATH_TO_SVG, dx, dy, dw, dh);

canvg构造函数接受一个svg字符串,url到svg文件或xml文档。

现在,我怎样才能让canvg只渲染其中一张牌? :/提前致谢

1 个答案:

答案 0 :(得分:2)

从理论上讲,你应该可以使用SVG view specification来实现这一点,这些都是这样的:

var img = new Image();
img.onload = function() { ctx.drawImage(img,0,0,200,200); }
img.src = "some.svg#svgView(viewBox(50,20,200,400))";

svgView片段语法可以选择要呈现的svg的哪个部分。这是一个example(不使用< canvas>,只是用于< img>元素)。但请注意,某些浏览器尚未实现此功能。