为了在选择框“吞噬整个对象”时选择元素,您可以尝试以下操作:-
1)制作选择框时,检查元素的四个角是否都在选择框内。您可以使用 getBBox() 获得四个元素点。如:-
var bbox=element.getBBox();
var x=bbox.x;
var y=bbox.y;
var width=bbox.width;
var height=bbox.height;
var point1={
x:x,
y:y
};
var point2={
x:x+width,
y:y
};
var point3={
x:x+width,
y:y+height
};
var point4={
x:x,
y:y+height
};
现在将所有点与选择矩形进行比较,如果所有点都在选择矩形内,则选择元素。
2)现在关于“实际对象”。我认为您的意思是元素的实际形状,而不是 BBox。为此,一种解决方案是将您的形状转换为“路径”,然后获取路径的所有“节点”。最后将所有这些节点(点)与选择矩形一一进行比较。
要获取路径中的点,请尝试使用此功能:-
function path2Array(path) {
var pointsArray = new Array();
for (var i = 0; i < path.getTotalLength(); i++) {
var point = path.getPointAtLength(i);
var cordinatesXY = {
x: point.x,
y: point.y
}
pointsArray.push(cordinatesXY);
}
return pointsArray;
}
;
(这就是我想出的)。:-)