Край от узла к себе в Росассале
Есть ли способ заставить Roassal нарисовать ребро от одного узла к себе?
Я посмотрел на кучу примеров и не могу найти ни одного, который это делает, и простое добавление ребра в исходный код ничего не дает.
т.е.
view shape rectangle size: 1.
view nodes: (1 to: 5).
view shape arrowedLine.
view
edges: ((OrderedCollection new) add: (1->1); add: (2->2); add: (3->3); add: (4->4); add: (5->5); yourself)
from: #key
to: #value.
view circleLayout.
не производит никаких краев вообще.
1 ответ
Я не уверен, реализует ли Roassal такого рода преимущество. Я попробовал то же самое в Roassal2, и хотя край создан, он не показан. Кажется, что он создает линию, где начало и конец совпадают.
В качестве обходного пути вы можете повторно использовать строки Безье, указав другое поведение для этого случая:
RTDirectedLine>>pointsFrom: from To: to
| point mid |
from = to
ifTrue: [
mid := to * (1 - offset) + (from * offset).
point := from + (50 @ 50).
^ Array with: from - (10 @ 0) with: point with: to - (0 @ 10) ]
ifFalse: [
mid := to * (1 - offset) + (from * offset).
point := from + (mid - from) rightRotated.
^ Array with: from with: point with: to ]
Затем вы можете запустить в рабочей области:
| b |
b := RTGraphBuilder new.
b nodes
size: 20;
color: Color gray.
b edges
directed;
connectTo: #yourself.
b layout circle.
b addAll: (1 to:5).
b open.
b view canvas
Вы должны увидеть это:
http://cdn.imghack.se/images/1aaea2de365d0a16818ec8bcf991348a.png