2013-03-28 38 views
6

loadSVGFromURLを使用してキャンバスに配置されたファブリック内のSVGの色を変更する方法はありますか? 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://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(); 
    }); 
}); 

すべてのパスが同じ色を有する場合fabric.PathGroupのファンクションにsetfillのみ動作オブジェクト:

https://github.com/kangax/fabric.js/blob/master/src/path_group.class.js#L99
+0

Hey Kienz、これに助けてくれてありがとう、矢印はそのコードでキャンバスに全く追加されていません... – IlludiumPu36

+1

ちょっとピーター、私はjsfiddleの例を作った(loadSVGFromString loadSVGFromURLの代わりに) http://jsfiddle.n et/Kienz/nFqpB/ あなたのSVGを投稿できますか? – Kienz

+2

"あなたは色を言う、私は色を言う、すべてのものをオフにする..."(ジョージとアイラガーシュウィンへの謝罪)。問題は私がcolourSet(英語のスペル)を使用していて、関数が 'colorSet'(Yankのスペル...)と呼ばれていたことでした。すべて今働いている。 – IlludiumPu36

0

OBJECT.setFill( 'FILL_COLOR');を使用できます。例えば

rect.setFill('red'); 
関連する問題