2012-11-01 17 views
8

Mam element canvas i tworzę z tego obiekt z tkaniny. Teraz chcę dynamicznie zmieniać kolor tła. Poniższe nie działa dla mnie.Konieczność zmiany koloru tła płótna podczas używania tkaniny js

var x; 

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

x.backgroundColor = "#f00"; 

Kolor tła jest biały i nie zmienia się na czerwony.

+3

zrobił próbowałeś 'x.renderTop()' lub 'x. renderAll() 'after select attribute? –

+0

To działa na mnie .. Dzięki eicto .. Plz dodać to jako odpowiedź. – viji

Odpowiedz

16

Trzeba uczynić płótno po zmianie właściwości, ponieważ właściwości obiektu jest tylko właściwości i nie obsługiwane przez zdarzenia

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

Tak dziwne, że użyłem canvas.setBackgroundColor, a kolor nie wpłynął, dopóki nie zmieniłem ponownie. Potem spróbowałem tego i zadziałało. pluskwa? –

+1

[zobacz ten przykład (to nie mój)] (http://jsfiddle.net/fabricjs/hXzvk/) używają renderAll do ustawienia koloru, –

+0

Widzę, co robią, czy istnieje preferowany sposób robienia tego lub negatywy do jednego lub oboje działają? –

Powiązane problemy