高分求绘制树状结构的组件或者源码或者相关信息,来客皆有分^_^(2)

common_man 2005-05-15 08:21:41
我希望在我的程序的视图中画出一个小型无线网络的动态拓扑树,当然,这可以使用树形控件,方便快捷,但是其缺点也是显而易见的:
1.树形控件中的树状结构是自左向右生长的,不符合常规树状结构的逻辑(常规树状结构应该是根在上方,自顶向下生长),不直观;
2.我想在拓扑树中表现一些网络动态信息,比如用闪烁的叶子节点来表示一个刚刚发现的无线网络节点,用闪烁的连线来表示刚刚发现的链路,在链路上附上箭头来表述数据包的流动等等,但是树形控件的表现力单薄,无法实现这些;
3.从视觉效果上讲,树形控件也不够美观漂亮,嘿嘿。

我在网上也找了几天,没有什么斩获,所以,我想请各位帮忙找找可有绘制树状结构的组件(比如绘制实时曲线方面就有很好用很漂亮的组件),或者相关源码,或者提供一点相关信息。来捧场的各位都有分,谢谢了!

另:相同的帖子我打算发4个,都是200分的,下面会给出各个帖子的地址,斑竹大人不要见怪啊,心情急切之间,才有此仓卒之举啊,嘿嘿,敬请放行……
...全文
176 37 打赏 收藏 转发到动态 举报
写回复
用AI写文章
37 条回复
切换为时间正序
请发表友善的回复…
发表回复
shicheng521 2005-05-19
  • 打赏
  • 举报
回复
up一下
学习学习
common_man 2005-05-18
  • 打赏
  • 举报
回复
来了也up一下
common_man 2005-05-17
  • 打赏
  • 举报
回复
临走再up一下,嘿嘿
酒红绿叶 2005-05-17
  • 打赏
  • 举报
回复
树状控件。。。自下而上?
看看codeproject里面有没有可供参考的代码。
common_man 2005-05-17
  • 打赏
  • 举报
回复
晚上不想干活,于是到IEEE和cnki上搜了一下,下了不少文章——画树算法也是一个小小的研究热点,毕竟树形结构的用处还是很多的,嘿嘿。文章中给出的多叉树的美观准则无外乎以下几条:
1.树是平面图,树中不同层的结点位于不同的水平线上,且这些水平线互相平行;
2.父结点位于儿子结点的上一层,同一层上的结点间的距离不小于一个规定值;
3.在水平方向上,父结点位于其最左和最右儿子结点的中央;
4.树所占的宽度要尽量小。

有文章给出了一个画树算法的基本思路:
对于一棵m叉树,其根结点为T,如果T的儿子为空(即只有一个根结点),就直接画,否则,递归调用m叉树画树算法,画出根结点T的所有子树,然后把它们放置再一起,使它们的根结点互相重合,将它们移开,使这些子树中同一层上的结点间的距离都不小于一个事先规定的最小间距值,最后再根据美观准则3画出根结点T,从而完成m叉树的画树过程。

其实,给出树中各个节点的横坐标,就能画出树了,甚至精确的坐标都不用,逻辑坐标就可以了,比如下面一个树,其中A,B,C,D四个节点的逻辑坐标就可以设为1,0,1,2.
A
/ | \
B C D

从上面的基本思想出发,我思考了一下,大致勾勒出了一个基于树的深度遍历的算法框架:
设根节点为T,假设通过递归调用已经获得了前i-1棵子树各个节点的逻辑坐标,同时记录下了第i-1棵子树每一层最右节点的逻辑坐标,记为数组A,将第i棵子树的根节点的逻辑坐标设为第i-1棵子树的逻辑坐标,然后递归调用算法,得到第i棵子树各个节点的逻辑坐标,递归调用返回时带出第i棵子树每一层最左节点的逻辑坐标,记为数组B,然后将A与B比较,根据上述美观准则2就可以得出第i棵子树应该平移的逻辑坐标值,然后再对第i棵子树进行一次遍历,修改其中每个节点的逻辑坐标值,即加上那个偏移值,这样,就得到了第i棵子树各个节点的逻辑坐标……在求出T的每一棵子树的逻辑坐标值后,利用美观准则3就可以给出T的坐标值。

我还不清楚上述算法能不能满足准则4,但我想应该差不多够用了,各位帮我看看有没有什么破绽,谢谢!

树画出来了,至于什么闪烁之类的效果,还是自己动手吧,嘿嘿,明后天把算法细化一下,然后就开始自力更生了,如果效果还不错,愿与大家共享……
xkit 2005-05-17
  • 打赏
  • 举报
回复
up
xkit 2005-05-17
  • 打赏
  • 举报
回复
up
common_man 2005-05-17
  • 打赏
  • 举报
回复
codeproject里翻遍了,嘿嘿,还是没有,郁闷
lbianxp 2005-05-16
  • 打赏
  • 举报
回复
难,爱莫能助
Dynamic 2005-05-16
  • 打赏
  • 举报
回复
再UP
common_man 2005-05-16
  • 打赏
  • 举报
回复
I will be here just waiting for a miracle......
oyljerry 2005-05-16
  • 打赏
  • 举报
回复
gz
common_man 2005-05-16
  • 打赏
  • 举报
回复
BTW:
我的email是 yang_yu_1978@163.com
common_man 2005-05-16
  • 打赏
  • 举报
回复
谢谢兄弟捧场
xyw2278 2005-05-16
  • 打赏
  • 举报
回复
我也只好帮忙顶一下了,楼主要求太高!
xift_2008 2005-05-16
  • 打赏
  • 举报
回复
帮楼主顶顶~~~
common_man 2005-05-16
  • 打赏
  • 举报
回复
临走up一下
common_man 2005-05-16
  • 打赏
  • 举报
回复
再顶顶
common_man 2005-05-16
  • 打赏
  • 举报
回复
顶起
common_man 2005-05-16
  • 打赏
  • 举报
回复
呵呵,自己再顶一下,其实我已经做好自己写的准备了,不过还是想再等等,如果能找到像ProEssentials那样专业级的组件就好了,人多力量大,大家帮找找
加载更多回复(17)

19,468

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 图形处理/算法
社区管理员
  • 图形处理/算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧