2013-03-28 4 views
6

Czy istnieje sposób na zmianę koloru svg w tkaninie umieszczonej na płótnie za pomocą loadSVGFromURL? Svg jest po prostu strzałką, jeśli nie mogę ustawić wypełnienia lub obrysu, czy mogę to zrobić za pomocą filtra?Fabric.js - zmiana koloru/wypełnienia/suwu importowanego 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/ i http://fabricjs.com/customization/ cię tam dostanie – dsdsdsdsd

Odpowiedz

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

Funkcja setfill na fabric.PathGroup obiektów działa tylko wtedy, gdy wszystkie ścieżki ma ten sam kolor: https://github.com/kangax/fabric.js/blob/master/src/path_group.class.js#L99

+0

Hej Kienz, dziękuję za twoją pomoc, ale strzałka nie jest w ogóle dodawana do płótna z tym kodem ... – IlludiumPu36

+1

Hej Peter, zrobiłem jsfiddle przykład (z loadSVGFromString zamiast loadSVGFromURL): http: //jsfiddle.n et/Kienz/nFqpB/ Czy umieścisz swoje SVG ?! – Kienz

+2

"Mówisz kolor, mówię kolor, nazwijmy to wszystko ..." (przeprasza George'a i Irę Gershwin). Problem polegał na tym, że używałem colourSet (angielskiej pisowni) i funkcji określanej jako "colorSet" (pisownia Janków ...). Wszystko działa teraz. – IlludiumPu36

0

można użyć OBJECT.setFill ("FILL_COLOR"); np

rect.setFill('red');