【发布时间】:2021-11-05 11:32:49
【问题描述】:
例如,让我们创建两个矩形。 然后我们选中这两个矩形,想看看它们的坐标:
var greyBox = new fabric.Rect({
left:100,
top:100,
fill: 'grey',
width: 100,
height: 100
});
var redBox = new fabric.Rect({
left:300,
top:300,
fill: 'red',
width: 100,
height: 100
});
function createCanvas(id){
canvas = new fabric.Canvas(id);
canvas.add(greyBox);
canvas.add(redBox);
canvas.on('selection:created', function(e) {
const activeSelection = e.target;
console.log(activeSelection._objects[0].left);
console.log(activeSelection._objects[1].left);
});
return canvas;
}
我们确切地知道他们的左边是 100 和 300。 但相反,我们看到的是:-150 和 49:
我们如何获得正确的坐标?
【问题讨论】:
-
对象在选择中的位置是相对于选择的,在这种情况下是从中心测量的。由于选择的宽度为 301(边框多出 1 个像素),因此灰色框的位置为
-150.5,因为它位于最左边缘。如果您考虑选择的位置和宽度,您将获得正确的值,即-150.5 + 100 + 150.5 = 100。 -
谢谢,它解释了错误坐标
标签: fabricjs