2013-03-28 2 views
6

Есть ли способ изменить цвет svg в ткани, размещенной на холсте, используя loadSVGFromURL? Svg - это просто стрелка, если я не могу установить заливку или удар, могу ли я сделать это с помощью фильтра?Fabric.js - изменение цвета/заливка/ход импортированного 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(); 
      }); 
      }); 
+0

http://fabricjs.com/hovering/ и http://webproverka.com///fabricjs.com/customization/ вы получите там – dsdsdsdsd

ответ

16
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(); 
    }); 
}); 

Функция setFill на fabric.PathGroup объектов работает только тогда, когда все пути имеет тот же цвет: https://github.com/kangax/fabric.js/blob/master/src/path_group.class.js#L99

+0

Эй, Кинц, спасибо за вашу помощь, но стрелка не добавляется на холст вообще с этим кодом ... – IlludiumPu36

+1

Эй, Питер, я сделал пример jsfiddle (с loadSVGFromString вместо loadSVGFromURL): http: //jsfiddle.n et/Kienz/nFqpB/ Можете ли вы разместить свой SVG ?! – Kienz

+2

«Вы говорите цвет, я говорю цвет, давайте назовем все это ...» (извинения Джорджу и Ира Гершвин). Проблема заключалась в том, что я использовал colourSet (английское правописание) и функцию, названную «colorSet» (Yank spelling ...). Теперь все работает. – IlludiumPu36

0

вы можете использовать OBJECT.setFill ('FILL_COLOR'); , например

rect.setFill('red');