getAbsolutePoints() против getGeometry().getPoints()

Я получаю очки такого края: List<mxPoint> points = graph.getView().getState(edgeCell).getAbsolutePoints(); в событии: mxEvent.CHANGE.

Это, насколько я знаю, событие, которое срабатывает после изменения точек ребра. В том же событии edgeCell.getGeometry().getPoints(); возвращает только одну точку, я полагаю, центральную.

Когда я пытаюсь применить это изменение программно (устанавливаю те же точки на новое ребро), оно не работает с graph.getView().getState(edgeCell).setAbsolutePoints(points);. Кажется, что точки передаются в состояние, но изменение не применяется к графику. Может быть, я должен вызвать какое-то событие.

Затем я попытался установить эти точки на геометрию ребра, эти изменения применяются к графику, однако это вызывает проблемы с позиционированием. Я считаю, что это потому, что абсолютные точки (абсолютное позиционирование) отличаются от геометрических.

Любая помощь в том, как мне действовать?


person Jonas    schedule 30.04.2014    source источник


Ответы (1)


Я нашел решение здесь: http://forum.jgraph.com/questions/237/how-do-i-get-the-length-of-an-edge Я устанавливал абсолютные точки внутри транзакции (до endUpdate), но состояние создается после него (что имеет смысл).

Помимо установки абсолютных точек после транзакции, я обновляю край, например: graph.validateEdge(edgeCell.getSource(), edgeCell.getTarget(), edgeCell);

Не уверен, что это лучший способ обновить это изменение, но, похоже, это работает для моего случая.

person Jonas    schedule 03.05.2014