Fabric.js - 更改导入的svg的颜色/填充/描边

Ill*_*u36 7 jquery fabricjs

有没有办法使用loadSVGFromURL更改放置在画布上的布料中的svg的颜色?svg只是一个箭头,如果我无法设置填充或描边,我可以使用过滤器吗?

$("input:radio[id='arrow']").click(function() {
fabric.loadSVGFromURL('../scripts/svg/arrow.svg', function(objects) {
          var group = new fabric.PathGroup(objects, {
          left: 165,
          top: 100,
          width: 295,
          height: 40,
          fill: colourSet
        });
        canvas.add(group);
        canvas.renderAll();
          }); 
           });
Run Code Online (Sandbox Code Playgroud)

Kie*_*enz 17

var colorSet = '#00FFFF';

$("input:radio[id='arrow']").click(function() {
  fabric.loadSVGFromURL('../scripts/svg/arrow.svg', function(objects, options) {
    var shape = fabric.util.groupSVGElements(objects, options);
    shape.set({
      left: 165,
      top: 100,
      width: 295,
      height: 40
    });
    if (shape.isSameColor && shape.isSameColor() || !shape.paths) {
      shape.setFill(colorSet);
    }
    else if (shape.paths) {
      for (var i = 0; i < shape.paths.length; i++) {
        shape.paths[i].setFill(colorSet);
      }
    }
    canvas.add(shape);
    canvas.renderAll();
  }); 
});
Run Code Online (Sandbox Code Playgroud)

仅当所有路径具有相同颜色时,fabric.PathGroup对象上的函数setFill才有效:https: //github.com/kangax/fabric.js/blob/master/src/path_group.class.js#L99

  • "你说的颜色,我说的颜色,让我们把整个事情都说完了......"(向George和Ira Gershwin道歉).问题是我使用的是colourSet(英文拼写),而且函数是指'colorSet'(Yank拼写......).一切正常. (2认同)