2013-07-10 143 views
2

我一直在寻找FabricJSKineticJS作为我正在开发的项目的潜在解决方案,并且像FabricJS为SVG提供的库级支持一样。然而,由于缺乏缩放和平移功能,我需要更多。出于这个原因,我开始(再次)看KineticJS。KineticJS是否支持SVG库?

我在KineticJS文档中没有看到有关SVG支持的内容,我想知道是否有人可以告诉我KineticJS是否支持渲染SVG图像或不将其作为其框架的一部分。我认为就KineticJS而言,SVG只是另一个图像,因此在框架中应该这样处理。另外,当我在网上搜索有关SVG和canvas的文章时,我看到讨论页面和文章SVG或Canvas。我不认为这两者是相互排斥的。 <canvas>元素不是本地支持SVG吗?

+1

我们将有可能在布放大,在未来一个月左右 – kangax

+0

@kangax非常酷,我会寻找它,然后支持。谢谢(你的)信息! –

回答

2

正如您怀疑的那样,canvas和KineticJS都将SVG视为另一张图片。

是的,画布元素可以使用其drawImage来绘制svg图像。

,是的,你可以SVG图像加载到kineticJS也:

var stage = new Kinetic.Stage({ 
    container: 'container', 
    width: 400, 
    height: 400 
}); 
var layer = new Kinetic.Layer(); 
stage.add(layer); 

var img=new Image(); 
img.onload = function() { 
    var image = new Kinetic.Image({ 
     image: img, 
     x: 20, 
     y: 20, 
     width: 75, 
     height: 75, 
    }); 
    layer.add(image); 
    layer.draw(); 

} 
img.crossOrigin="anonymous"; 
img.src = "https://dl.dropboxusercontent.com/u/139992952/stackoverflow/rocket.svg"; 

在另一方面,

FabricJS有操纵SVG元素更多的支持。

+1

'drawImage()'虽然不是完全跨浏览器。上次我测试时,Opera 12不支持它 - http://kangax.github.io/jstests/canvas-drawimage-svg/我怀疑移动浏览器也可能有问题。 – kangax

+0

很高兴知道......感谢您的领导:) – markE

+0

感谢有关跨浏览器支持问题的详细信息。即使有这样的警告,我也会接受这个答案,因为我认为它回答了我原来的问题。 :) –