使用Fabric JS加载SVG加载SVG

时间:2014-11-24 06:39:22

标签: javascript svg fabricjs

有人可以告诉我如何使用未经编辑的结构js加载SVG文件。 使用以下代码加载SVG文件,但它显示为单个对象。

<html>
<head>
    <script src="fabric.min.js"></script>
    <script src="jquery.min.js"></script>
    <script>
        $(function (){

            var canvas = this.__canvas = new fabric.Canvas('c');
            fabric.Object.prototype.transparentCorners = true;
            fabric.loadSVGFromURL("xxx.svg", function (objects, options) {
                var group = fabric.util.groupSVGElements(objects, options);
                canvas.add(group);
                canvas.renderAll();
            });
        });
    </script>
</head>
<body>
<canvas id="c" width="800px" height="600px"></canvas>
</body>
</html>

PS:我尝试将对象逐个添加(使用循环)到画布但是没有用。 我也试过这个:Load SVG from file to canvas and ungroup it

2 个答案:

答案 0 :(得分:3)

这就是我为当前项目所做的工作,我正在加载一个未分组的svg文件。

var canvas = new fabric.Canvas('myCanvas');

fabric.loadSVGFromURL('svgfile.svg', function (objects) {
     canvas.add.apply(canvas, objects);
     canvas.renderAll();
});

现在你可以做这样的事情来选择一个对象。

canvas.on('object:selected', function (e) {
      var activeObject = e.target;
      activeObject.setFill('purple');
});

答案 1 :(得分:1)

不要使用var group = fabric.util.groupSVGElements(objects, options);,而是可以循环浏览objects,然后您可以在画布上逐个添加它们。