我有一个最初平移的画布,以便0,0点位于屏幕中间。我正在尝试移动以编程方式创建的组,但由于某种原因,该组相对于可见画布的左上角而不是画布的0,0点移动。在第一次移动之后,平移工作正常并且组在该位置移动,直到我丢弃并再次创建它,然后它再次相对于左上角,而不考虑平底锅。如果我使用选择工具创建组选择,则每次都可以正常工作。
我用这个平移画布:
var offsetX = -canvas.getWidth()/2;
var offsetY = -canvas.getHeight()/2;
canvas.absolutePan(new fabric.Point(offsetX, offsetY));
这是我创建群组的方式:
var group = new fabric.Group();
objects.forEach(function (o) {
group.addWithUpdate(o);
canvas.remove(o);
});
canvas.add(group);
然后我试着用它来移动它:
group.set("left", 0);
canvas.renderAll();
然后该组正好位于canvas元素的左边缘。但是,如果我用鼠标选择该组并使用它,它就会出现在它应该的位置 - 在中心:
canvas.getActiveGroup().set("left", 0);
canvas.renderAll();
那么,我该如何让它正常工作?我知道我可以只计算画布转换的偏移量,但我觉得这应该在库本身得到补偿,而且我要么以某种方式使用它错了,要么就是一个bug。