繁体   English   中英

Fabric.js:如何取消选择画布上的一个或多个对象?

[英]Fabric.js: how to deselect one or multiple objects on canvas?

例如,我在画布上有多个对象A ,* B * 和C 其中三个对象被选中为已激活。 通过使用 Fabric.js,是否可以仅丢弃/停用其中一个对象?

例如,选择三个对象,然后单击画布外的按钮时,对象 B 将被丢弃/停用。

我查看了 FabricJS 官网的 doc 文件,只找到了canvas.deactivateAll()canvas.discardActiveObject() 这些功能只能停用所有活动对象,而不是特定活动对象。

有人可以给我一个指导吗? 谢谢!

我可能会迟到回答这个问题,但在fabricjs (1.4.3)您可以使用以下命令取消选择画布上的所有选定对象。

canvas.deactivateAll().renderAll();

我在创建该画布的图像之前使用它。 希望它可以帮助某人。

对于fabricjs 4.0,您可以使用:

canvas.discardActiveObject().renderAll();

假设您有三个对象 objectA、ObjectB 和 ObjectC,并且选择了对象。 现在,如果您想取消选择任何对象(例如 ObjectB)。 在这种情况下,您可以尝试以下代码。

var activeGroup = canvas.getActiveGroup();
activeGroup.removeWithUpdate(ObjectB);
canvas.renderAll(); 

如果您只有一个节点处于活动状态,那么您可以这样做。

canvas.discardActiveObject();
canvas.renderAll(); 

要丢弃所有活动组,您可以使用下面的函数。丢弃当前活动的组和触发事件. 当用作方法时,e 参数没有任何应用。

canvas.discardActiveGroup();

要丢弃单个对象,您可以像这样使用。 丢弃当前活动的对象并触发事件。 如果该函数因鼠标事件而被结构调用,则该事件将作为参数传递并发送到自定义事件的 fire 函数。 当用作方法时,e 参数没有任何应用。

canvas.discardActiveObject();

最后最终像这样渲染顶部画布和辅助容器画布。

canvas.renderAll();

关于更新,只有

canvas.discardActiveObject()

我刚刚找到了一种方法:

当多个对象被激活时,它们实际上形成了一个组。 那么实际上只需要使用一个名为“removeWithUpdate”的fabric.group方法就可以了。

示例:

var activeGroup = canvas.getActiveGroup();
activeGroup.removeWithUpdate(theObject);
canvas.renderAll();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM