yfiles for html2.5 使用FreeEdgeLabelModel.INSTANCE.createEdgeAnchored()方法,其中设置ratio为0.5让其保持居中,但是实际效果并没有居中,因为我使用了一些方法让edge不穿过node的标签, 但是这里label的居中计算方式是相对于两端节点,而不是edge的长度,如何修改为标签相对edge的长度居中呢?
时间: 2023-12-10 17:37:05 浏览: 51
对于你的问题,你可以尝试使用FreeEdgeLabelModel.INSTANCE.createAlongEdge()方法,该方法可以根据标签长度和edge长度进行计算,保持标签居中。具体实现可以参考以下代码:
```
double edgeLength = Point2D.distance(edge.getStart().getX(), edge.getStart().getY(),
edge.getEnd().getX(), edge.getEnd().getY());
// 设置标签比例为0.5
double ratio = 0.5;
double distance = edgeLength * ratio;
// 计算标签位置
Point2D labelPos = FreeEdgeLabelModel.INSTANCE.createAlongEdge(edge, distance, OrientedRectangle.fromCenter(label.getWidth() / 2.0, label.getHeight() / 2.0), FreeEdgeLabelModel.Position.CENTER);
```
这段代码中,我们首先计算出edge的长度,然后根据比例计算标签所在位置的距离,最后调用FreeEdgeLabelModel.INSTANCE.createAlongEdge()方法计算标签的位置。
希望这能对你有所帮助!
阅读全文