我在我的Fabric.js上使用覆盖图像,它是这样添加的:
canvas.setOverlayImage('image.png', canvas.renderAll.bind(canvas));
我的问题是,我找不到一个方法来删除它从画布。要删除对象,我可以使用类fabric.StaticCanvas
中的remove(object)
,但我还没有找到一种方法来将覆盖图像作为该方法的对象。我尝试将叠加图像设置为null
:
canvas.setOverlayImage(null, canvas.renderAll.bind(canvas));
但没有用
6条答案
按热度按时间kninwzqo1#
查看源代码,它几乎看起来像一个错误,您不能以您期望的方式将其设置为null(作为setOverlayImage的参数)。查看static_canvas.class.js,您可以看到
setOverlayImage()
的源代码:在util/misc.js中,您可以看到
util.loadImage()
的源代码:所以你可以看到,如果你把null传递给
setOverlayImage()
,null将反过来成为util.loadImage()
的参数。如果后者的参数为null,则该方法不做任何事情,因此整个操作也不做任何事情。看起来你必须作弊,直接在
canvas
对象上设置属性:vof42yt12#
我创建了一个切换,在具有覆盖图像和空覆盖之间交替。在Kangax更新代码后,这是可能的:
ctzwtxfj3#
而不是Null,只是使其空白。
zbq4xfa04#
我发现了同样的问题
我通过设置backgroundImage = 0进行了修复
2skhul335#
我能想到的唯一的变通方法是将不透明度设置为
k3bvogb16#
这是我找到的唯一解决办法。
canvas.overlayImage?.dispose()
我发现在源代码中使用。