fabricjs删除backgroundImage

dro*_*ude 4 html javascript html5-canvas fabricjs

是否可以在以下fabric.Canvas设置中删除backgroundImage :

canvas.setBackgroundImage('img_url',function() { 
    canvas.renderAll();
Run Code Online (Sandbox Code Playgroud)

或者只是回到标准背景?要设置backgroundColorwhite不工作.

谢谢你的帮助!问候最大

Rik*_*tor 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);
}
...
Run Code Online (Sandbox Code Playgroud)

显然,当你这样做时,背景颜色实际上被设置为白色canvas.backgroundColor = white;.但是,既然canvas.backgroundImage它仍然是一个Image物体,它就会被你填充背景的任何颜色所吸引.

因此,当您不希望backgroundImage绘制时,需要将其设置为0.它不工作null,因为typeof this.backgroundImage === 'object'还在评估为truerenderAll,提示backgroundImage要绘制.但它可以使用canvas.backgroundImage = 0;.

例子.

  • 感谢您的回答,但这也可以正常工作:canvas.backgroundImage = false; (2认同)

Dip*_*Raj 5

将背景图像设置为null将其删除。

canvas.setBackgroundImage(null, canvas.renderAll.bind(canvas));
Run Code Online (Sandbox Code Playgroud)

您还可以编写这样的函数来清除背景图像和背景颜色,这很方便。

function clearCanvasBackground() {
  if (canvas) {
    canvas.setBackgroundImage(null);
    canvas.setBackgroundColor('');
    canvas.renderAll();
  }
}
Run Code Online (Sandbox Code Playgroud)