3

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

谢谢

更新

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

添加完所有我想要的功能后,我打算在 codeplex 上将其开源。将在 codeplex 上发布另一个更新。

谢谢

4

5 回答 5

2

我认为您正在寻找的关键字是Force-based algorithms

于 2011-02-25T15:06:27.393 回答
1

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

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

于 2011-04-05T16:44:05.657 回答
1

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

于 2011-02-25T14:39:51.530 回答
0

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

它有一个 WPF 和 Silverlight 版本。它实现了用于定位节点的 John Q. Walker II 算法并且运行良好。我仍然需要处理旋转,以便它可以从左到右显示。目前只是从上到下。

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

于 2012-08-10T19:02:54.587 回答
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-版本/silverlight/图表 http://www.yworks.com/en/products_yfilessilverlight_about.html

于 2011-04-05T16:53:29.100 回答