private void DrawNodeShape(Canvas canvas, Point pointPlace, KeyValuePair <int, List <NodeTopological> > levelNode, NodeTopological currNode) { NetworkNodeShape networkNodeShape = new NetworkNodeShape() { Key = currNode.Key }; Point pointText = new Point(pointPlace.X - networkNodeShape.Width / 2, pointPlace.Y - networkNodeShape.Height / 2); string toShowDesc = currNode.NodeInfo.Key; string toShowName = currNode.NodeInfo.typeDesc; networkNodeShape.rShowNode.Fill = new SolidColorBrush(Colors.Red); networkNodeShape.txtDesc.Text = toShowDesc; networkNodeShape.txtName.Text = toShowName; networkNodeShape.PointNow = pointText; canvas.Children.Add(networkNodeShape); canvas.SetLeftTop(networkNodeShape, pointText); networkNodeShapesList.Add(networkNodeShape); }
/// <summary> /// 生成拓扑数据 /// 用于拓扑排序, /// 加载依赖节点 /// </summary> /// <returns></returns> public List <NodeTopological> initData() { //交易服务 var server6 = new Node() { nodeinfo = new NodeInfo() { num = "007", ip = "0.0.0.0", port = 10011, type = ClientType.TRADE_SERVER }, linkinfo = new List <NodeInfo>() { new NodeInfo() { ip = "0.0.0.0", port = 10012, type = ClientType.TRADE_FRONT }, new NodeInfo() { ip = "0.0.0.0", port = 10013, type = ClientType.TRADE_GATEWAY }, new NodeInfo() { ip = "0.0.0.0", port = 10014, type = ClientType.NEWS_SERVER }, new NodeInfo() { ip = "0.0.0.0", port = 10015, type = ClientType.SMS_SERVER }, } }; //交易前置 var server5 = new Node() { nodeinfo = new NodeInfo() { num = "006", ip = "0.0.0.0", port = 10012, type = ClientType.TRADE_FRONT }, linkinfo = new List <NodeInfo>() { new NodeInfo() { ip = "0.0.0.0", port = 10011, type = ClientType.TRADE_SERVER }, new NodeInfo() { ip = "0.0.0.0", port = 10016, type = ClientType.CONFIRM_SERVER }, new NodeInfo() { ip = "0.0.0.0", port = 10014, type = ClientType.NEWS_SERVER }, new NodeInfo() { ip = "0.0.0.0", port = 10015, type = ClientType.SMS_SERVER }, } }; //认证服务 var server16 = new Node() { nodeinfo = new NodeInfo() { num = "005", ip = "0.0.0.0", port = 10016, type = ClientType.CONFIRM_SERVER }, linkinfo = new List <NodeInfo>() { new NodeInfo() { ip = "0.0.0.0", port = 10014, type = ClientType.NEWS_SERVER }, new NodeInfo() { ip = "0.0.0.0", port = 10015, type = ClientType.SMS_SERVER }, } }; //交易网关 var server7 = new Node() { nodeinfo = new NodeInfo() { ip = "0.0.0.0", port = 10013, type = ClientType.TRADE_GATEWAY } }; //消息服务 var server17 = new Node() { nodeinfo = new NodeInfo() { ip = "0.0.0.0", port = 10014, type = ClientType.NEWS_SERVER } }; //短信服务 var server19 = new Node() { nodeinfo = new NodeInfo() { ip = "0.0.0.0", port = 10015, type = ClientType.SMS_SERVER }, }; var realData = new List <Node>() { server16, server5, server7, server6, server17, server19 }; var toTopData = new List <NodeTopological>(); //生成拓扑数据 foreach (var item in realData) { var currNodeTop = new NodeTopological() { NodeInfo = item.nodeinfo }; currNodeTop.Dependencies = new List <NodeTopological>(); if (item.linkinfo != null) { foreach (var item2 in item.linkinfo) { currNodeTop.Dependencies.Add(new NodeTopological() { NodeInfo = item2 }); } } toTopData.Add(currNodeTop); } return(toTopData); }
private void DrawEllipse(Canvas canvas, Point pointPlace, KeyValuePair <int, List <NodeTopological> > levelNode, NodeTopological currNode) { canvas.DrawEllipse(pointPlace, 20, Colors.Red, currNode); Point pointText = new Point(pointPlace.X, pointPlace.Y); string toShow = currNode.NodeInfo.typeDesc + ":" + currNode.NodeInfo.Key; var textblock = canvas.DrawTextBlock(pointText, toShow); if (levelNode.Key > 0) { pointText.X = pointPlace.X + 20; pointText.Y -= 20; canvas.SetLeftTop(textblock, pointText); } }