Gojs-在屏幕上选择鼠标后突出显示节点

时间:2019-06-27 11:16:47

标签: coordinate-systems gojs

我正在使用https://www.npmjs.com/package/@simonwep/selection-js库在屏幕上选择一个区域。我有一个Gojs地图,我要在其中突出显示用鼠标选择的区域内的所有节点。

问题是我从Gojs获得的坐标值没有意义。

我在地图的左上角有一个节点,其中x应该为0,y也应该为0。

当我使用var docloc = this.diagram.transformDocToView(node.part.location);

值为{x: 46.79957533551601, y: 13.364121297226063}

这很好,但是我不知道如何获取宽度和高度,因此我可以知道节点是否在我选择的区域内。

当我使用node.part.actualBounds.size

我得到{width: 313.7058502906977, height: 82.43768168604652}

哪个不正确!

我用鼠标绕着上方的节点画了一个小区域,发现宽度为94px

请帮助!

2 个答案:

答案 0 :(得分:0)

您有可以共享的节点模板吗? GoJS坐标将不对应于窗口cooodinates,因此您可能还需要进行这种转换。

答案 1 :(得分:0)

经过一番挖掘,我得到了以下解决方案:

const nodePosition = this.diagram.transformDocToView(node.actualBounds.position);
const nodeCenter = this.diagram.transformDocToView(node.actualBounds.center);
const nodeBoundaries = {
          x1: nodePosition.x,
          x2: nodePosition.x + (nodeCenter.x - nodePosition.x) * 2,
          y1: nodePosition.y,
          y2: nodePosition.y + (nodeCenter.y - nodePosition.y) * 2
};

我使用中心坐标计算了节点的边界。

我必须先transformDocToView !!