组织树绘制算法

时间:2011-02-25 13:58:53

标签: c# silverlight algorithm graph-algorithm

我正在C#中实现一个组织树图 - 从上到下或从左到右 - 并寻找一个好的算法来绘制树。有什么建议吗?

由于

更新

我终于有时间去研究它了所以最后写了我自己的库来存储和绘制树,通过创建一个自定义面板,不确定我是否遵循一个特定的算法,我只是写了自己的 - 回到笔和论文+时间:)

一旦我添加了我想要的所有功能,我打算在codeplex上使它成为开源。将在codeplex上发布另一个更新。

由于

5 个答案:

答案 0 :(得分:2)

我认为您要查找的关键字是Force-based algorithms

答案 1 :(得分:1)

如果您只使用标准Silverlight,也可以。 使用ItemsControl(具有StackTenel的ContainerTemplate,因此您可以垂直或水平显示项目)与HierarchicalDataTemplate结合使用。 显示您使用ItemTemplate设置的项目的方式,它应该直接工作

答案 2 :(得分:1)

您可以使用酷炫的可视化而不是绘制树,这是一个Squarified Treemap。它是一个分层数据结构的视图,它显示了叶节点打包成矩形时的相对大小。因为它是递归绘制的,所以如果它们在层次结构的不同大小子树中,则会绘制两个不同大小的叶节点。

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

答案 3 :(得分: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

答案 4 :(得分:0)

这是我在这个主题上找到的最好的文章:A Graph Tree Drawing Control For wpf

它有WPF和Silverlight版本。它实现了John Q.Walker II算法,用于定位节点并完美地工作。我仍然需要处理旋转,因此它可以从左到右显示。目前只是自上而下。

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