在同一个 html canvas 元素上放置和创建 fabric canvas 后,无法选择对象
Objects aren't selectable after disposing and creating fabric canvas over the same html canvas element
这里是codepen exaple.
基本上:
let fabricCanvas = new fabric.Canvas('c');
fabricCanvas.add(
new fabric.Rect({ left: 10, top: 10, fill: 'red', width: 20, height: 20 })
); // 1. Initialize fabric wrapper for the 1st time
fabricCanvas.dispose(); // 2. Dispose it
fabricCanvas = new fabric.Canvas('c');
fabricCanvas.add(
new fabric.Rect({ left: 100, top: 100, fill: 'red', width: 20, height: 20 })
); // 3. Initialize fabric wrapper for the 2nd time
在 html canvas 上第二次配置和创建 fabric.Canvas 后,canvas 上的对象不可选。如何在不创建新的 html canvas 元素的情况下使其工作?
我不知道当我们使用 dispose()
时会发生什么,因为我试过这个我发现了这背后的原因。
当我们 dispose()
并使用 fabricjs
面料创建新的 canvas 时,另外添加另一个鞋面 canvas 这是问题所在。所以我们在使用 dispose()
时以编程方式删除上层 canvas 。问题已解决。
这里
var canvas = new fabric.Canvas('c');
var rect = new fabric.Rect({
left: 100,
top: 100,
fill: "#FF0000",
stroke: "#000",
width: 100,
height: 100,
strokeWidth: 10,
opacity: .8
});
canvas.add(rect);
canvas.dispose()
$(".upper-canvas").remove(); //<------- here we remove
canvas = new fabric.Canvas('c');
var rect2 = new fabric.Rect({
left: 100,
top: 100,
fill: "green",
stroke: "#000",
width: 100,
height: 100,
strokeWidth: 10,
opacity: .8
});
canvas.add(rect2);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/fabric.js/1.5.0/fabric.min.js"></script>
<canvas id="c" width="500" height="300"></canvas>
这里是codepen exaple.
基本上:
let fabricCanvas = new fabric.Canvas('c');
fabricCanvas.add(
new fabric.Rect({ left: 10, top: 10, fill: 'red', width: 20, height: 20 })
); // 1. Initialize fabric wrapper for the 1st time
fabricCanvas.dispose(); // 2. Dispose it
fabricCanvas = new fabric.Canvas('c');
fabricCanvas.add(
new fabric.Rect({ left: 100, top: 100, fill: 'red', width: 20, height: 20 })
); // 3. Initialize fabric wrapper for the 2nd time
在 html canvas 上第二次配置和创建 fabric.Canvas 后,canvas 上的对象不可选。如何在不创建新的 html canvas 元素的情况下使其工作?
我不知道当我们使用 dispose()
时会发生什么,因为我试过这个我发现了这背后的原因。
当我们 dispose()
并使用 fabricjs
面料创建新的 canvas 时,另外添加另一个鞋面 canvas 这是问题所在。所以我们在使用 dispose()
时以编程方式删除上层 canvas 。问题已解决。
这里
var canvas = new fabric.Canvas('c');
var rect = new fabric.Rect({
left: 100,
top: 100,
fill: "#FF0000",
stroke: "#000",
width: 100,
height: 100,
strokeWidth: 10,
opacity: .8
});
canvas.add(rect);
canvas.dispose()
$(".upper-canvas").remove(); //<------- here we remove
canvas = new fabric.Canvas('c');
var rect2 = new fabric.Rect({
left: 100,
top: 100,
fill: "green",
stroke: "#000",
width: 100,
height: 100,
strokeWidth: 10,
opacity: .8
});
canvas.add(rect2);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/fabric.js/1.5.0/fabric.min.js"></script>
<canvas id="c" width="500" height="300"></canvas>