Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/424.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/opengl/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用fabric js克隆画布并继续编辑_Javascript_Canvas_Fabricjs - Fatal编程技术网

Javascript 使用fabric js克隆画布并继续编辑

Javascript 使用fabric js克隆画布并继续编辑,javascript,canvas,fabricjs,Javascript,Canvas,Fabricjs,我想用fabric js克隆画布,并继续在克隆画布中编辑现有的fabric js对象,但它不起作用。它表明setBackgroundImage未定义 $('#btnClick')。在('单击touchstart',函数(){ var canvas=document.getElementsByTagName(“canvas”); //画布上下文 var context=canvas[0].getContext(“2d”); //获取画布的当前图像数据 var data=context.getIm

我想用fabric js克隆画布,并继续在克隆画布中编辑现有的fabric js对象,但它不起作用。它表明setBackgroundImage未定义

$('#btnClick')。在('单击touchstart',函数(){
var canvas=document.getElementsByTagName(“canvas”);
//画布上下文
var context=canvas[0].getContext(“2d”);
//获取画布的当前图像数据
var data=context.getImageData(0,0,画布[0]。宽度,画布[0]。高度);
//存储当前GlobalComposite操作
var compositeOperation=context.globalCompositeOperation;
//设置为在当前内容后面绘制
context.globalCompositeOperation=“目的地结束”;
//设置背景色
context.fillStyle=“#FFFFFF”;
//在整个画布上绘制背景/矩形
context.fillRect(0,0,画布[0]。宽度,画布[0]。高度);
var tempCanvas=document.createElement(“画布”),
tCtx=tempCanvas.getContext(“2d”);
tempCanvas.width=640;
tempCanvas.height=480;
tempCanvas.setBackgroundImage(“”);
}

使用fabric库的想法是使用它的方法来简化您的工作。您不会直接与canvas元素交互

canvas
loadFromJSON
toJSON
方法可用于克隆画布副本,包括背景图像

var canvas=newfabric.canvas('canvas');
var canvas2=newfabric.Canvas('canvas2');
$(文档).ready(函数(){
var rect=new fabric.rect({宽度:100,高度:200,填充:“红色”});
canvas.add(rect);
var circle=new fabric.circle({radius:80,fill:'blue'});
canvas.add(圆圈);
$(“#克隆”)。单击(
function(){canvas2.loadFromJSON(JSON.stringify(canvas),function(){canvas2.renderAll()};})
});


javascript画布没有任何setBackgroundImage api。可能您应该通过创建它来使用此画布的结构对象,尽管您可以通过css
canvas{background:url(img.jpg)}向画布添加背景