2012-11-01 4 views
8

Ho un elemento canvas e creo oggetto fabric da questo. Ora, voglio cambiare il colore dello sfondo in modo dinamico. Quanto segue non funziona per me.È necessario modificare il colore di sfondo della tela durante l'utilizzo di fabric js

var x; 

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

x.backgroundColor = "#f00"; 

Il colore di sfondo è bianco e non viene modificato in rosso.

+3

hai provato 'x.renderTop()' o 'x. renderAll() 'dopo aver selezionato l'attributo? –

+0

Che funziona per me .. Grazie eicto .. Plz aggiungi questo come risposta. – viji

risposta

16

è necessario renderizzare tela dopo aver cambiato proprietà, perché le proprietà di oggetto si trova a soli proprietà e non gestite da evento

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

Così strano stavo usando canvas.setBackgroundColor e il colore non ha avuto effetto fino a quando non ho cambiato di nuovo. Poi ho provato questo e ha funzionato. bug? –

+1

[vedi questo esempio (non è mio)] (http://jsfiddle.net/fabricjs/hXzvk/) usano renderAll per impostare il colore, –

+0

Vedo cosa stanno facendo, c'è un modo preferito di fare questo o negativi a entrambi o dal momento che entrambi funzionano? –