我有一张代表一副牌的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只渲染其中一张牌? :/提前致谢
答案 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>元素)。但请注意,某些浏览器尚未实现此功能。