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

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

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

另:相同的帖子我打算发4个,都是200分的,下面会给出各个帖子的地址,斑竹大人不要见怪啊,心情急切之间,才有此仓卒之举啊,嘿嘿,敬请放行……
...全文
200 40 打赏 收藏 转发到动态 举报
写回复
用AI写文章
40 条回复
切换为时间正序
请发表友善的回复…
发表回复
shicheng521 2005-05-19
  • 打赏
  • 举报
回复
up一下
学习学习
common_man 2005-05-18
  • 打赏
  • 举报
回复
来了也up一下
common_man 2005-05-17
  • 打赏
  • 举报
回复
临走再up一下,嘿嘿
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,但我想应该差不多够用了,各位帮我看看有没有什么破绽,谢谢!

树画出来了,至于什么闪烁之类的效果,还是自己动手吧,嘿嘿,明后天把算法细化一下,然后就开始自力更生了,如果效果还不错,愿与大家共享……
common_man 2005-05-17
  • 打赏
  • 举报
回复
今天中午给平安保险公司的人给狠狠郁闷了一下,唉,从前父母长辈都说保险公司都是骗人的,还不怎么信,今天算是领教了,对于保险公司,我们消费者是弱势群体,它们利用信息不对称来骗我们入保,等真正有了损失也已各种理由不给赔,呵呵,吃一堑长一智,不再上他们的当了,要是买,还是买国外的保险公司的。。。
说了一点题外话,嘿嘿,再顶顶帖子,明后天揭帖,然后开始写代码 :(
LCBoy 2005-05-17
  • 打赏
  • 举报
回复
▲↑
hell_wolf 2005-05-17
  • 打赏
  • 举报
回复
up
common_man 2005-05-17
  • 打赏
  • 举报
回复
up
zxwitsme 2005-05-16
  • 打赏
  • 举报
回复
re
common_man 2005-05-16
  • 打赏
  • 举报
回复
I will be here just waiting for a miracle......
hxfhxf 2005-05-16
  • 打赏
  • 举报
回复
帮顶
viaboy 2005-05-16
  • 打赏
  • 举报
回复
help u Up

自顶向下生成我会,但你不需要。

Come On
common_man 2005-05-16
  • 打赏
  • 举报
回复
BTW:
我的email是 yang_yu_1978@163.com
James_ht 2005-05-16
  • 打赏
  • 举报
回复
像我这种初级水平的只能帮你顶啦! :)
common_man 2005-05-16
  • 打赏
  • 举报
回复
嘿嘿,谢谢楼上的兄弟
xift_2008 2005-05-16
  • 打赏
  • 举报
回复
来接点分,呵呵~~~
xift_2008 2005-05-16
  • 打赏
  • 举报
回复
帮楼主顶一下~~~好运~~~
common_man 2005-05-16
  • 打赏
  • 举报
回复
临走up一下
common_man 2005-05-16
  • 打赏
  • 举报
回复
呵呵,谢谢楼上,我再顶顶,等待奇迹
MarsV 2005-05-16
  • 打赏
  • 举报
回复
帮楼主顶一下
当初我在写编译原理的一个程序时也想用楼主提到的树结构绘图控件,可惜没找到,后来只好用树控件了
加载更多回复(20)

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

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