如何在fabric js中找出多边形的绝对坐标?
How to find out absolute coordinates of Polygon in fabric js?
如果我在缩放或移动后得到分数,我会得到一些错误的分数。
如何在 fabric js 中找出 Polygon 的绝对坐标?
var onObjectScaling = function(eventObj) {
if (target.type === 'dpolygon') {
target.minX *= target.scaleX;
target.minY *= target.scaleY;
var maxX = target.minX;
var maxY = target.minY;
angular.forEach(target.points, function (v) {
v.x *= target.scaleX;
v.y *= target.scaleY;
maxX = Math.max(maxX, v.x);
maxY = Math.max(maxY, v.y);
});
}
};
终于,经过一番尝试,我找到了一个正确的计算绝对坐标的方法
angular.forEach(object.points, function(point) {
point.x = object.left + (point.x - object.minX);
point.y = object.top + (point.y - object.minY);
});
@Andrei 的解决方案对我不起作用。
相反,我找到了两个解决方案,可能对某人有帮助。
在fabric 2.0之前,多边形的点都是相对于它的中心的,要计算坐标可以这样:How to get polygon points in Fabric.js
2.0后,多边形点绝对化为canvas,这将有助于:
就我而言,我使用 2.3.6,后来的解决方案适用于我。
如果我在缩放或移动后得到分数,我会得到一些错误的分数。 如何在 fabric js 中找出 Polygon 的绝对坐标?
var onObjectScaling = function(eventObj) {
if (target.type === 'dpolygon') {
target.minX *= target.scaleX;
target.minY *= target.scaleY;
var maxX = target.minX;
var maxY = target.minY;
angular.forEach(target.points, function (v) {
v.x *= target.scaleX;
v.y *= target.scaleY;
maxX = Math.max(maxX, v.x);
maxY = Math.max(maxY, v.y);
});
}
};
终于,经过一番尝试,我找到了一个正确的计算绝对坐标的方法
angular.forEach(object.points, function(point) {
point.x = object.left + (point.x - object.minX);
point.y = object.top + (point.y - object.minY);
});
@Andrei 的解决方案对我不起作用。
相反,我找到了两个解决方案,可能对某人有帮助。
在fabric 2.0之前,多边形的点都是相对于它的中心的,要计算坐标可以这样:How to get polygon points in Fabric.js
2.0后,多边形点绝对化为canvas,这将有助于:
就我而言,我使用 2.3.6,后来的解决方案适用于我。