Алгоритм построения организационного дерева

Я реализую граф организационного дерева - сверху вниз или слева направо - на С# и ищу хороший алгоритм для рисования дерева. Есть рекомендации?

Спасибо

Обновить

Наконец-то у меня появилось время поработать над этим, поэтому я написал свою собственную библиотеку для хранения и рисования дерева, создав пользовательскую панель, не уверенный, следовал ли я определенному алгоритму, я просто написал свою собственную - вернемся к ручке и бумаге + время :)

Я намерен сделать его открытым исходным кодом на codeplex, как только я закончу добавлять все функции, которые я хотел. Выложу еще одно обновление, как только оно появится на codeplex.

Спасибо


person Community    schedule 25.02.2011    source источник


Ответы (5)


Я думаю, что ключевое слово, которое вы ищете, это алгоритмы на основе Force.

person Bart Kiers    schedule 25.02.2011
comment
Спасибо, посмотрю. - person ; 25.02.2011

Также возможно, если вы используете только стандартный Silverlight. Используйте ItemsControl (у которого в качестве ContainerTemplate есть StackPanel, поэтому вы можете отображать элементы вертикально или горизонтально) в сочетании с HierarchicalDataTemplate. Способ отображения элементов, которые вы установили с помощью ItemTemplate, и он должен работать напрямую

person fixagon    schedule 25.02.2011

Классная визуализация, которую вы можете использовать вместо рисования дерева, — это Squarified Treemap. Это представление иерархической структуры данных, которое показывает относительные размеры листовых узлов, упакованных в прямоугольник. Поскольку он рисуется рекурсивно, два конечных узла будут отображаться разного размера, если они находятся в поддеревьях разного размера иерархии.

http://en.wikipedia.org/wiki/Отображениедерева

person Eli    schedule 05.04.2011

Один из вариантов, который вы можете рассмотреть, — просто использовать элемент управления TreeView и преобразования, чтобы он выглядел так, как вы хотите.

http://forums.silverlight.net/forums/p/149065/334501.aspx

Честно говоря, я думаю, что использование стороннего компонента было бы гораздо лучшим «алгоритмом», чем повторное изобретение. Если вам следует подумать, есть несколько продуктов, которые предлагают эту возможность для SL:

http://www.nwoods.com/components/silverlight-wpf/goxam-overview.htm http://www.mindfusion.eu/diagramlite.html http://www.syncfusion.com/products/user-interface-edition/silverlight/diagram http://www.yworks.com/en/products_yfilessilverlight_about.html

person Keith Adler    schedule 05.04.2011

Это лучшая статья, которую я нашел на эту тему: Элемент управления отрисовкой графического дерева для wpf

Он имеет версии WPF и Silverlight. Он реализует алгоритм Джона К. Уокера II для позиционирования узлов и работает отлично. Мне все еще нужно поработать над вращением, чтобы его можно было отображать слева направо. В настоящее время только сверху вниз.

Дополнительную информацию об алгоритме можно найти здесь: http://www.cs.unc.edu/techreports/89-034.pdf

person Adolfo Perez    schedule 10.08.2012