`

.NET实现的四层拓扑结构

阅读更多



 

 

看着这图是不是很眼熟。没错,这是前段时间在Javaeye上风风雨雨的用Swing实现的四层网元拓扑图。看后深有感触,用Swing能做出这样的效果确实不易,何时我用.NET的也能用实现出这种的拓扑结构图。

 

看看TWaver早已出了.NET的版本,借助于TWaver强大的功能以及之前Swing的例子,我想实现起来应该也不是很难。今天就来分享一下我的思路。

首先我们先来看看整个系统的结构


 

 

很典型的四层拓扑,这四个层,我首先想到的也是用Group来实现,仿照之前Swing的例子,设置了group对应的属性

 

 

group.IsExpanded = true;            
group.SetStyle(Styles.BODY_ALPHA, 0.8);            
group.SetStyle(Styles.GROUP_FILL_COLOR, color);            
group.SetStyle(Styles.GROUP_GRADIENT, Consts.GRADIENT_LINEAR_NORTHEAST);           
group.SetStyle(Styles.LABEL_POSITION, Consts.POSITION_RIGHT);            
group.SetStyle(Styles.LABEL_XOFFSET, 100);            
group.SetStyle(Styles.LABEL_SIZE, 14);            
group.SetStyle(Styles.LABEL_BOLD, true);           
group.SetStyle(Styles.LABEL_FONT, new FontFamily("微软雅黑"));

 



 

效果不太理想,矩形图形,翻阅TWaver相关文档,发现group上没有设置平行四边形的属性。这就比较麻烦了,我看可能是需要采取定制的功能了,还好TWaver在这方面比较人性化,留了相应的接口,可以重新绘制。

我显示3D的平行四边形的效果图,我想需要给3Dgroup设置两个属性,一个是偏移(angle),也就是group相对于矩形的下方两个点的偏移位置;第二个是深度(deep),也就是3D的厚度。有了这两个参数我们就可以进行定制了。我们需要重写group的DrawContent()方法,在该方法中先取出Group自身的bound,根据angle绘制出平行四边形的四个点

double angle = group.Angle;
double deep = group.Deep;
double gap = bounds.Height / Math.Tan(angle * Math.PI / 180);
PointCollection points = new PointCollection();
Point p1 = new Point(bounds.X - gap, bounds.Y + bounds.Height);
points.Add(p1);
Point p2 = new Point(bounds.X + bounds.Width, bounds.Y + bounds.Height);
points.Add(p2);
Point p3 = new Point(bounds.X + bounds.Width + gap, bounds.Y);
points.Add(p3);
points.Add(new Point(bounds.X, bounds.Y));
// Add
path.Data = this.CreateGeometry(points);
this.AddComponent(path);
this.AddBodyBounds(path.Data.Bounds);
 
 
 接下来我们就需要绘制下面和右边那种3D的效果了,下方画一个小的平行四边形,这个我们只要计算好这个四边形的四个点就很容易绘制。这四个点可以通过大的大的平行四边形的下面两个点和高度得到:
 
// Add Bottom Rectangle
path = new Path();
// Set Fill
path.Fill = Utils.CreateSolidColorBrush(fillColor);
// Set Outline
this.SetStroke(path);
// Set Data
RectangleGeometry rectangleGeometry = new RectangleGeometry();
rectangleGeometry.Rect = new Rect(p1.X, p1.Y, p2.X-p1.X, deep);
// Add
path.Data = rectangleGeometry;
this.AddComponent(path);
this.AddBodyBounds(path.Data.Bounds);
 
右边的平行四边形也类似,这里就不详解了。看看运行后的效果




哈哈,感觉还不错,可以达到预期的效果了。平行四边形准备好了,接下来我们在四边形加上一些节点试试。


 继续,用通用的方法创建四个group


接下来我们就要实现这个Demo中的亮点:穿透效果。就是上层节点和下层节点有关联时,不同层之间的连线怎么去穿越group,这个就涉及到TWaver中层的概念 了,上面的四层结构网元之间的覆盖关系就是通过层来实现的,软件业务层是最上层的元素,可以通过设置这个层为最上一层,那么这层上的元素就会覆盖下面所有层的元素。连线的穿透也是这样的道理,我们可以将连线分为上下两部分,上半部分和from节点处于一层,下半部分和to节点处于一层,中间用一个虚拟的节点相连。

  

private void CreateCrossLayerLink(object fromID, object toID, bool left)
        {
            Node from = (Node)this.box.GetDataByID(fromID);
            Node to = (Node)this.box.GetDataByID(toID);
            if (from == null || to == null)
            {
                return;
            }
            ConnectPoint point = new ConnectPoint();
            point.LayerID = from.LayerID;
            double xOffset = -from.Width / 2 - 15;
            if (left)
            {
                xOffset = from.Width / 2 + 15;
            }
            double yOffset = from.Height / 2 + 20;
            double x = from.CenterLocation.X + xOffset;
            double y = from.CenterLocation.Y + yOffset;
            point.SetCenterLocation(x, y);
            point.Parent = from.Parent;
            this.box.Add(point);

            LayerLink upLink = new LayerLink(from, point, true);
            upLink.LayerID = from.LayerID;
            upLink.Parent = from.Parent;
            this.box.Add(upLink);

            LayerLink downLink = new LayerLink(point, to, false);
            downLink.LayerID = to.LayerID;
            downLink.Parent = to.Parent;
            this.box.Add(downLink);
        }

 

 

 

 

效果很快就出来了,我们多创建几个连线试试

 


 

 

下面附上工程的源码,有兴趣的朋友可以继续实现连接的弯曲和告警效果。 LayerDemo

  • 大小: 155.4 KB
  • 大小: 24.9 KB
  • 大小: 51.4 KB
  • 大小: 54.6 KB
  • 大小: 155.4 KB
  • 大小: 173.8 KB
  • 大小: 55.1 KB
  • 大小: 4.7 KB
  • 大小: 128.6 KB
分享到:
评论

相关推荐

    智能电力监控系统的网络拓扑结构设计

    智能电力监控系统的网络拓扑结构设计.文章以智能电力监控系统的三层网络拓扑结构为核心,分析了网络拓扑结构的选配原则,流行的选配方案,以及网络管理子系统的重要性。

    ASP.NET拓扑,SVG实现

    现在实现了基本的拓扑结构,后面规划加上超链接,和数据库相结合,不过这个需要大家共同探讨,有人完成的给个连接哈,谢谢 预览界面:...

    SuperMap IDesktop.Net之修复含拓扑错误复杂模型(骨架翻转插件)

    骨架翻转.Net组件接口MeshOperator.ReverseMesh(Skeleton skeleton),仅需要翻转体积小于0的骨架。翻转骨架,用于处理模型数据。 对于模型数据布尔运算或获取截面崩溃或结果不对的情况,都可以使用该方法进行处理。 ...

    网络拓扑结构大全和图片星型、总线型、环型、树型、分布式、网状拓扑结构.doc

    环型拓扑结构的优点是实现简单、投资最小,传输速度较快。但是,它也存在一些缺点,如维护困难,任何一个节点出了故障都会造成整个网络的中断、瘫痪。 总线型拓扑结构: 总线型拓扑结构是一种分布式网络,每个节点...

    机器人机构拓扑结构学

    技术资料,关于机器人结构 拓扑 结构学,机器人结构理论

    计算机网络拓扑结构PPT课件.pptx

    计算机网络拓扑结构 计算机网络拓扑结构是指计算机网络中各个节点之间的连接方式和结构。拓扑结构是计算机网络的基础设施,决定了网络的性能、可靠性和扩展性。 星状网拓扑结构 星状网拓扑结构是指每个节点都与...

    有线局域网拓扑结构分享.pdf

    目前,混合型网络拓扑结构已经基本上不再使用,而是采用分层星型(也就是树型结构)结构,因为在一般的20层以内的楼中,100米的双绞线就可以满足。如果距离过远,如高楼层,或者多建筑物之间的网络互联,则可以用...

    逆变器的拓扑结构的详细介绍

    这个是介绍逆变器拓扑结构的资料,网上很少能查到这个逆变器的拓扑结构的

    小型办公室局域网络拓扑结构图.pdf

    小型办公室局域网络拓扑结构图是一个复杂的网络结构,涉及到核心层、汇聚层、接入层、ADSL 服务器、交换机和路由器等设备。了解这些设备的作用和关系对于设计和维护小型办公室局域网络非常重要。

    大型图书馆一般性网络拓扑结构图

    大型图书馆一般性网络拓扑结构图,大型图书馆一般性网络拓扑结构图,大型图书馆一般性网络拓扑结构图

    VB.NET实现网络拓朴图

    利用VB.net及数据库做的网络拓朴图软件,可以任意移动节点及保存节点位置,下次打开节点位置为上次打开的地方

    网络拓扑结构的规划设计原则

    网络拓扑结构的规划设计原则 网络拓扑结构设计主要是确定各种设备以什么方式相互连接起来。根据中小企业的网络规模,网络体系结构、所采用的协议,扩展和升级管理等各个方面因素来考虑。拓扑结构的设计直接影响到...

    业界技术发展趋势——逆变器拓扑结构发展趋势.pdf

    逆变器拓扑结构发展趋势 逆变器拓扑结构是光伏并网系统中的关键组件,其设计和选择对系统的效率、成本和可靠性有着重要的影响。当前市场上常见的逆变器拓扑结构有五种:直接逆变型、高频隔离型、高频升压不隔离型、...

    局域网设计方案网络拓扑结构图设计思路拓扑结构.ppt

    局域网设计方案网络拓扑结构图设计思路拓扑结构

    组建宿舍局域网拓扑结构.pdf

    四、物理拓扑结构: 根据上述网络拓扑结构,将路由器、集线器、计算机,通过网线连接起来。首先将网络连接到路由器,然后将路由器连接到两个宿舍,每个宿舍再连接到一个集线器,最后将计算机连接到集线器。这个物理...

    模拟某学校网络拓扑结构

    下图是模拟某学校网络拓扑结构,在该校网络接入层采用S2126,接入层交换机划分了办公网VLAN20和学生网VLAN30,VLAN20和VLAN30通过汇聚层交换机S3550,与路由器A相连,另S3550上有个VLAN40,存放一台网管机,路由器A与B...

    常见的局域网的拓扑结构.pdf

    树型拓扑结构是一种层次结构,结点按层次连结,信息交换主要在上下结点之间进行,相邻结点或同层结点之间一般不进行数据交换。优点是连结简单,维护方便,适用于汇集信息的应用要求。缺点是资源共享能力较低,可靠性...

    电源拓扑结构图.pdf电源拓扑结构图.pdf电源拓扑结构图.pdf电源拓扑结构图.pdf电源拓扑结构图.pdf

    电源拓扑结构图.pdf电源拓扑结构图.pdf电源拓扑结构图.pdf电源拓扑结构图.pdf电源拓扑结构图.pdf电源拓扑结构图.pdf电源拓扑结构图.pdf电源拓扑结构图.pdf电源拓扑结构图.pdf

    C语言实现拓扑排序 数据结构

    C语言实现拓扑排序 数据结构 C语言实现拓扑排序 数据结构

    几个最有代表性公司的PLC网络拓扑结构.doc

    PLC 网络拓扑结构 PLC 网络拓扑结构是指在工业生产过程中, Programmable Logic Controller(可编程逻辑控制器)网络的结构形式。PLC 网络拓扑结构的选择取决于不同的应用场景和需求。在生产过程中,PLC 网络拓扑...

Global site tag (gtag.js) - Google Analytics