使用以下设置后,是否可以在fabric.Canvas
中删除backgroundImage:
canvas.setBackgroundImage('img_url',function() {
canvas.renderAll();
或者回到标准背景?将backgroundColor
设置为white
无效。
感谢您的帮助! 问候Max
答案 0 :(得分:8)
这是来自renderAll
fabric.Canvas
函数的摘录
...
if (this.backgroundColor) {
canvasToDrawOn.fillStyle = this.backgroundColor;
canvasToDrawOn.fillRect(0, 0, this.width, this.height);
}
if (typeof this.backgroundImage === 'object') {
this._drawBackroundImage(canvasToDrawOn);
}
...
显然,当您执行canvas.backgroundColor = white;
时,背景颜色实际上设置为白色。但是,由于canvas.backgroundImage
仍然是Image
对象,因此它会以您填充背景的任何颜色绘制。
因此,当您不希望绘制backgroundImage
时,需要将其设置为0
。它不适用于null
,因为typeof this.backgroundImage === 'object'
仍会在true
中评估为renderAll
,从而提示backgroundImage
。但它适用于canvas.backgroundImage = 0;
。
<强> Example 即可。
答案 1 :(得分:0)
将背景图片设置为 null
将删除它。
canvas.setBackgroundImage(null, canvas.renderAll.bind(canvas));
你也可以写一个这样的函数来清除背景图片和背景颜色,很方便。
function clearCanvasBackground() {
if (canvas) {
canvas.setBackgroundImage(null);
canvas.setBackgroundColor('');
canvas.renderAll();
}
}
答案 2 :(得分:0)
嗨,我的 FabricJs 版本是 4.5.1
两种解决方案都不适用于我。因为我使用 FabricJs 与织物类型成角度。
我在检查 FabricJs 源代码时找到了解决方案。
我们可以简单地
<块引用>设置背景图像
有空
<块引用>Fabric.Image 对象。
这样我们就可以实现删除背景图片的功能。
这是可用于此解决方案的代码片段。
const image = new fabric.Image('');
canvas.setBackgroundImage(image, canvas.renderAll.bind(canvas));