我正在创建一个家谱程序。我的问题是如何定位节点?最初,我将根定位在屏幕的中心,如果它是一棵完美的二叉树,并且级别非常少,它就会工作得很好。然而,情况往往并非如此。这是一个样本树:-
A
B C
D E F I J
K L N O正如您所看到的,主要的问题是节点的位置。如果一个节点有多个子节点,并且它的相邻节点也有多个子节点,则它们倾向于重叠。(主要问题)I是使用Silverlight中的画布对节点进行绝对定位。如果您不是Silverlight开发人员,那么您可能不会为Silverlight和Canvas部分而烦恼。我只需要如何定位节点的逻辑。
树的高度可以很容易地通过知道树的总数量来计算,但是树的宽度是困扰我的。如何计算树的宽度(画布的总宽度)
有人能给我一些关于如何设置画布宽度以及什么逻辑将完美地用于节点定位的一般性指导吗?
注意:-,我没有要求整个算法,这也不是我的作业。我已经有算法和数据库了。我只需要节点的定位部分的指南。
(预先谢谢:)
发布于 2011-02-19 06:33:12
如果您为此树的任意节点实现了一个函数:width(node),则很容易定位每个节点。
这个函数可以递归地定义:
,
发布于 2011-02-19 06:29:08
我建议放大和缩小功能,以消除GUI房地产的混乱。
一个有很多孩子的节点可以分组,一个特殊的图标来表示它可以放大到下一个级别,我觉得随着家庭的成长,用户一开始就可以获得大图片,然后也可以放大到他想要的任何分支。
从谷歌地图的UI中获取线索,可能会有所帮助。
https://stackoverflow.com/questions/5049256
复制相似问题