我需要在C#中绘制一个公司结构树(类似于家谱)。所有辅助代码都在那里。它是有色的,互动的和花哨的。唯一的麻烦是算法实际决定放置每个节点的位置给了我很多悲伤。
目前,盒子的大小是100x50,我有一个叫做的课程 StaffNode
代表特定x,y坐标的工作人员。
该算法只需要创建一个 List<StaffNode>
使用适当的x和y。
这非常棘手。
基本上,算法是沿公司结构递归的,所以左 - >右,然后沿着树向上 - >向下。显然,如果两个节点在彼此之上是很糟糕的。
我可以想到一些算法可能产生这样的东西:
*
o O
o o o o o O
o O O O O O
O
虽然这样的东西会更好,但树很大,空间非常有限:
*
o O
o o o o o O
o O O O O O
O
你们中的任何人以前都要画这样的树吗?如果你有,我相信你已经遇到过我所遇到的许多障碍。有小费吗?到目前为止,我已经花了一整天的时间。