使用canvas.toDataURL()函數由Jason的Maggard的建議:
var c = document.getElementById('c');
var ctx = c.getContext("2d");
ctx.fillStyle = "#FF0000";
ctx.fillRect(0,0,c.width,c.height);
var bg = c.toDataURL("image/png");
var canvas = new fabric.Canvas('c');
canvas.setBackgroundImage(bg,canvas.renderAll.bind(canvas));
var path = new fabric.Path('M 0 0 L 200 100 L 170 200 z');
path.set({ left: 120, top: 120 });
canvas.add(path);
紅色背景仍然應該有你添加fabricjs代碼後還是一樣。如果你想能夠將它移動到/ etc中,你也可以使用canvas.toDataURL()函數作爲動態圖像的src。
var c = document.getElementById('c');
var ctx = c.getContext("2d");
ctx.fillStyle = "#FF0000";
ctx.fillRect(0,0,c.width,c.height);
var img = new Image();
img.src = c.toDataURL("image/png");
var canvas = new fabric.Canvas('c');
var oldCanvas = new fabric.Image(img,{ width: c.width, height: c.height });
var path = new fabric.Path('M 0 0 L 200 100 L 170 200 z');
path.set({ left: 120, top: 120 });
canvas.add(oldCanvas);
canvas.add(path);
哪裏有內容已經在上面的畫布?您發佈的代碼有效。我最好的猜測是你可以使用canvas.toDataURL()導出你的原始畫布來獲得一個可以用作新畫布背景的PNG。否則,您將不得不將自己的方法轉換爲將原始畫布轉換爲JSON。 – 2015-01-21 15:13:12