在 GoJS 节点或 graphObject 中有 "visible overflow"

Having "visible overflow" inside of a GoJS node or graphObject

我想在节点内部有一个形状,它的一部分会超出节点的边界。意思是,父元素的顶部和左侧 -10px。

现在我在节点内有一个矩形和一个圆,它看起来像这样:

如您所见,link 连接不正确,因为节点的大小已经扩大。我希望圆圈使用 css 术语绝对定位,换句话说,我不希望它影响节点大小的节点(显然,在此示例中是不可见的)。

我尝试了以下解决方案:

正在为节点设置宽度和高度。然后它裁剪圆圈,因为它超出了边界。

使用节点中的 fromSpot 和 toSpot 属性将 link 连接到节点的中心。显然它们被布局覆盖了,我不知道如何禁用 isLayoutPositioned

使用装饰,但我完全不明白我应该如何使用它们。

正在搜索我是否可以以某种方式设置元素的溢出可见,或以某种方式影响边界,或类似的东西,但没有找到任何适合我的东西。

这里的正确解决方案是什么?

让你的 Node 成为一个 "Spot" Panel,让你的节点的 "main" 元素成为 "port" 通过分配一个 GraphObject.portId,并通过设置其 GraphObject.alignment 属性 相对于 "main" 元素定位红圈,在本例中为 go.Spot.TopLeft。我也猜测分配 Node.locationObjectName 是你想要的。

myDiagram.nodeTemplate = $(go.Node, "Spot", { locationSpot: go.Spot.Center, locationObjectName: "BODY" }, $(go.Shape, { name: "BODY", width: 50, height: 50, fill: "lightgreen", strokeWidth: 0, portId: "" }), $(go.Shape, "Circle", { alignment: go.Spot.TopLeft, width: 20, height: 20, fill: "transparent", stroke: "red" }) );

请在 http://gojs.net/latest/intro/nodes.html. I recommend reading not only the Getting Started page, http://gojs.net/learn, but also all of the Introduction pages, http://gojs.net/intro 阅读更多适用于您要创建的应用类型的信息。

特别是,这些应该有用: