通过控件旋转组后,获取 Fabricjs 中组中对象相对于画布的位置

Sun*_*hew 3 javascript canvas fabricjs

我已经从SO帖子中弄清楚了如何获取组中对象的画布相对位置?如何获取坐标。我设法做了一些实验来获取缩放组时的坐标。

x = object.left * object.group.scaleX + object.group.left +(object.group.width/2) * object.group.scaleX;

y = object.top * object.group.scaleY + object.group.top + (object.group.height/2) * object.group.scaleY;

当组也旋转时如何获取 x 和 y。我遇到过 Fabric.util.rotatePoint,但并不真正知道如何使用它。我希望有一个函数可以返回对象相对于画布的坐标,同时考虑到原点X、原点Y、缩放、旋转等。请帮忙。谢谢阅读。

Sun*_*hew 5

我通过跟踪缩放和使用变换矩阵解决了这个问题。

var matrix = object.calcTransformMatrix();
x = matrix[4] // translation in X
y = matrix[5] // translation in Y
Run Code Online (Sandbox Code Playgroud)

根据定义,矩阵的第五个和第六个值是平移,但它也考虑了组内对象的旋转和缩放。我寻找物体位置的目的是在两个物体之间画一条线。我也想在用户调整画布大小后执行此操作。