javascript - 选定组的 Fabric.js 复制粘贴

标签 javascript canvas fabricjs

假设我在 Fabric.js Canvas 上选择了多个对象,并且可以使用 getActiveGroup 获取这组对象。任何人都可以提供如何将组复制并粘贴到新组中的示例,其中:

(a) 复制组中的每个对象都保留其与其他复制对象的相对位置

(b) 复制的组作为一个整体位于某个指定的 x,y 位置

(c) 复制的组对象在粘贴后被选择为一个组,但如果清除选择,它们将被视为 Canvas 上的单独对象

我尝试通过克隆和添加克隆组进行粘贴,如下所示:

canvas.getActiveGroup().clone(function(clone) {
    clone.left = 100;
    clone.top = 100;
    canvas.add(clone);
    canvas.deactivateAll();
    canvas.setActiveGroup(clone).renderAll();
});

现在,运行此代码后,克隆的组对象似乎已添加、定位和选择,但一旦我单击 Canvas 以清除选择,克隆的组对象就会跳转到 Canvas 上的不同位置。此外,克隆的对象不可单独选择,并且选择位置与新对象位置不同步。无论如何,我确信我错过了一些东西,但我不确定是什么。如有任何帮助,我们将不胜感激。

最佳答案

您应该尝试 canvas.getActiveGroup().forEachObject(function(o) 获取组类型对象,然后克隆它们。

我给你做了一个jsFiddle克隆一个组。

关于javascript - 选定组的 Fabric.js 复制粘贴,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30928934/

相关文章:

javascript - 为什么 document.querySelector 不适用于伪元素?

javascript - 我如何将其从两个硬编码图像更改为图像数组。

javascript - FabricJS 渐变颜色值

javascript - 隐藏 Material 轮播中的后退按钮

javascript - YouTube : get youtube title+ image+description like facebook

javascript - 在具有重复项的所有可能排列列表中查找给定字符串的排名

java - 将 NetBeans IDE 6.7 与 J3D 的 Canvas3D 容器结合使用

html - 为什么指定目标位置时 Canvas 的 putImageData 不起作用?

javascript - 将 Canvas 转换为 HTML5 中固定大小的图像

javascript - 如何在 fabric.js 中用 Canvas 保存图像