组织架构图绘制算法

3
我正在用C#实现组织树图——从上到下或从左到右——并寻找一个好的算法来绘制这棵树。有什么建议吗?
谢谢。
更新
我最终有时间来处理它,所以写了自己的库来存储和绘制树,创建了一个自定义面板,不确定是否遵循了特定的算法,我只是写了自己的 - 回到纸笔+时间 :)
我打算在CodePlex上开源它,一旦我完成了所有我想要的功能,就会发布另一个更新。
谢谢。
5个回答

2

谢谢,我会看一下的。 - user623892

1
一个很酷的可视化方式,可以用来代替绘制树形图,就是Squarified Treemap。它是一种层次数据结构的视图,展示了叶节点在矩形中打包时的相对大小。由于它是递归绘制的,如果两个叶节点在层次结构的不同大小子树中,则它们将以不同的大小绘制。

http://en.wikipedia.org/wiki/Treemapping


1

如果你只使用标准的Silverlight,这也是可能的。 通过使用ItemsControl(它的容器模板是StackPanel,所以可以垂直或水平地显示项)与HierarchicalDataTemplate结合使用。 你可以使用ItemTemplate设置显示项的方式,它应该直接工作。


0
你可以考虑的一个选项是简单地使用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


0

这是我在这个主题上找到的最好的文章:WPF图树绘制控件

它有WPF和Silverlight版本。它实现了John Q. Walker II算法来定位节点,并且运行得非常完美。我还需要处理旋转,以便可以从左到右显示。目前只能从上到下。

您可以在此处找到有关该算法的更多信息:http://www.cs.unc.edu/techreports/89-034.pdf


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接