我通过在画布上捕获鼠标点击事件,并将这些点传递给 fabric.Polygon
来绘制多边形。
现在,我需要知道的是,我想获取当前选定的多边形的鼠标坐标(画布上的像素点)?
我已经尝试过:
canvas.getActiveObject().get('points');
但这会产生一些负值和一些正值。
那么,请告诉我一种找出多边形顶点的方法好吗?
我通过在画布上捕获鼠标点击事件,并将这些点传递给 fabric.Polygon
来绘制多边形。
现在,我需要知道的是,我想获取当前选定的多边形的鼠标坐标(画布上的像素点)?
我已经尝试过:
canvas.getActiveObject().get('points');
但这会产生一些负值和一些正值。
那么,请告诉我一种找出多边形顶点的方法好吗?
多边形的点是相对于其中心的,因此您可以像这样获取它们的“绝对”位置:
var polygon = canvas.getActiveObject();
var polygonCenter = polygon.getCenterPoint();
var translatedPoints = polygon.get('points').map(function(p) {
return {
x: polygonCenter.x + p.x,
y: polygonCenter.y + p.y
};
});
让我们检查一下这个的样子:
translatedPoints.forEach(function(p) {
canvas.getContext().strokeRect(p.x-5, p.y-5, 10, 10);
});
我认为只有当多边形的角度为0时,这个方法才能奏效(否则还需要“旋转”点的坐标)。
从2.0版本开始,多边形的坐标发生了变化。在2.0之前,点是相对于多边形中心的;而在2.0之后,它们是相对于画布的绝对坐标。
请查看我对类似问题的回答https://dev59.com/KJnga4cB1Zd3GeqPfe7V#53710375