.NET软件开发
希望通过不断的经验积累,为以后的人学习起来更加方便

     根据网络的有关知识,了解到拓扑图的呈现问题. 移动的无线通信中,可以把拓扑图分为骨干环,汇聚环和接入环等拓扑图的呈现.

     当时我开发拓扑图的呈现是使用了国外的开源图形项目(The Netron Project),对他们的代码进行改进后就能根据数据动态的画出需要的拓扑图.

     一、下面开始讲解拓扑图开发的原理:

     1、首先:利用图形学的知识,对所要画的图形进行分析,分析如何构造出这样的图形.

     2、其次:根据分析出来图形构造的结构,画出图形出来.

 

     二、下面是例子:

     1、汇聚环的图形如下图:

     这个图是一个椭圆形,和椭圆上的点所组成的. 因为每个点和线都要保存相应的数据,因此要把点和线都做成实体.

     使用The Netron Project 做一个新的点的实体都很容易.但做线的实体就有点困难,因为要根据具体的需要来画不同的线. 以下就说说怎样做出这样的线的实体.曲线是由很多个点所组成的,因此我们也可以根据椭圆的2点之间的角度来循环找出多个点(当时我找了27个点).这个就能根据椭圆的中心,和椭圆上的2个点把点的图形连接起来..最后连接各点后,出来的图形也是椭圆。点的位置我们可以根据结点的数目平均地分配到椭圆上。

     不过有一点需要注意的是.这样画线是有限制性的.因为我们画线时是根据椭圆的中心和宽高来画的.如果拖动图形时,中心也应该跟着移动,这样画出来的图形就可以好看多了.

     这是画出来的效果图:

     

     (本人美工有点差..但具体的功能是实现的了)

     2、接入环的图形

     下图是接入环的图形:

     这个图形看上去非常复杂,简直不可能画出来的样子。其实仔细分析,还是可以画出来的。

     这个图形由中心点和周围的环组成,环上还有很多结点。这样的图形可以看成由一个环,根据中心点旋转出来的,旋转到某一位置时就画出一个环,画取多次后就形成这样的图形了。环的构造,我们可以看成是左边是椭圆,右边是直线。椭圆部分可以根据汇聚环的方法画出来,另外直线的连接就更容易了。

     这个图形的难点在于环的构造和环的旋转问题。这部分要使用更多高数上的知识,忘记的话速度都复习,不是你画不出这样的图形。

     使用The Netron Project画出来的效果图如下:

     

 

     效果图有点大,不能全部显示出来。不过大家能够做出来的话,效果比我的更好了。

     Demo: https://files.cnblogs.com/mlpok0681/Debug.rar

     这2个图形的点和线都是由一个个实体组成,并不是直接画图。因为需求上的原因,每个实体都有一定的数据要显示出来,只有用实体来保存了。

     因为商业用途,暂时不把代码共享出来。有疑问的朋友可以跟我一起交流.QQ:441404851

 

     再次强调:我所写的是画拓扑图的算法,真正的源代码是The Netron Project,The Netron Project是个开源图形控件,我只是在它的基础上把拓扑图的算法实现了.

     The Netron Project的源代码:http://nchc.dl.sourceforge.net/sourceforge/netron/CobaltSummer2005.zip.大家可以在这里下载一个旧版本的源代码.

     我当初开发拓扑图时开不到具体的实现方法,现在我画出来了.希望这算法对大家有用.我这算法还有很多不足的地方,希望高手提出.

posted on 2008-08-21 16:54  CZC  阅读(4449)  评论(4)    收藏  举报