2012-11-01 6 views
8

Ich habe ein canvas-Element und ich erstelle Stoff-Objekt daraus. Jetzt möchte ich die Hintergrundfarbe dynamisch ändern. Das Folgende funktioniert nicht für mich.Notwendigkeit, die Hintergrundfarbe des Segeltuches während der Verwendung von Stoff zu ändern js

var x; 

x = new fabric.Canvas("mycanvas", { 
     backgroundColor : "#fff", 
     selection: true 
    }); 

x.backgroundColor = "#f00"; 

Die Hintergrundfarbe ist weiß und wird nicht in rot geändert.

+3

haben Sie versucht, 'x.renderTop()' oder 'x. renderAll() 'nach Auswahl des Attributs? –

+0

Das funktioniert für mich .. Danke Eicto .. Plz fügen dies als Antwort hinzu. – viji

Antwort

16

Sie brauchen Leinwand zu machen, nachdem Eigenschaften zu verändern, weil Eigenschaften des Objekts nur Eigenschaften und nicht von Ereignis behandelt

http://jsfiddle.net/oceog/gDhht/

var canvas = new fabric.Canvas('c',{backgroundColor : "#0ff"}); 
console.log(canvas); 
canvas.backgroundColor="red"; 
canvas.renderTop(); 
canvas.add(
  new fabric.Rect({ top: 100, left: 100, width: 50, height: 50, fill: '#f55' }), 
  new fabric.Circle({ top: 140, left: 230, radius: 75, fill: 'green' }), 
  new fabric.Triangle({ top: 300, left: 210, width: 100, height: 100, fill: 'blue' }) 
); 

canvas.backgroundColor="green"; 
canvas.renderAll(); 
​ 
+0

So komisch, ich war mit canvas.setBackgroundColor und die Farbe wurde nicht wirksam, bis ich wieder geändert habe. Dann habe ich das versucht und es hat funktioniert. Fehler? –

+1

[siehe dieses Beispiel (es ist nicht meins)] (http://jsfiddle.net/fabricjs/hXzvk/) sie verwenden renderAll, um Farbe, –

+0

Ich sehe, was sie tun, gibt es eine bevorzugte Möglichkeit, dies zu tun oder Negative zu beiden oder seit sie beide arbeiten? –