【问题标题】:Fabric.js - change color/fill/stroke of imported svgFabric.js - 更改导入 svg 的颜色/填充/描边
【发布时间】:2013-03-18 12:54:33
【问题描述】:

有没有办法使用 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();
          }); 
           });

【问题讨论】:

标签: jquery fabricjs


【解决方案1】:
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();
  }); 
});

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

【讨论】:

  • 嘿 Kienz,感谢您对此的帮助,但使用该代码根本没有将箭头添加到画布中......
  • 嘿彼得,我做了 jsfiddle 示例(使用 loadSVGFromString 而不是 loadSVGFromURL):jsfiddle.net/Kienz/nFqpB 你能发布你的 SVG 吗?!
  • “你说颜色,我说颜色,让我们把整个事情都取消吧……”(向 George 和 Ira Gershwin 道歉)。问题是我使用了 colourSet (英文拼写)并且函数引用了“colorSet”(Yank 拼写......)。现在一切正常。
【解决方案2】:

你可以使用 OBJECT.setFill('FILL_COLOR'); 例如

rect.setFill('red');

【讨论】:

  • 2021年有更新的答案吗?
猜你喜欢
  • 1970-01-01
  • 2013-10-27
  • 1970-01-01
  • 2015-03-23
  • 2014-08-11
  • 2021-05-23
  • 1970-01-01
  • 1970-01-01
  • 2020-01-01
相关资源
最近更新 更多