/// <summary> /// 布局算法 确定节点位置 /// </summary> public void LayOut() { m_LayOutCount = 0; m_LstNodes = new List <Tx_Node>(); m_Nodes = new List <Tx_Node>(); m_LstEntrys = new List <Tx_Entry>(); foreach (TradeFlow item in flowList) { var tradeFlowJoin = new StringBuilder();//串连交易流程 string[] str = { "#", "=" }; var _tradeFlow = item.Trade_Flow.Trim(); var x3 = _tradeFlow.Remove(_tradeFlow.Length - 2, 2); var _s = x3.Split(str, StringSplitOptions.RemoveEmptyEntries); if (_s.Count() > 0) { var i = 0; _s.ToList().ForEach(k => { i++; var m = k.Remove(k.Length - 1, 1); var condition = m.Split('@')[0].ToString(); var subtxCode = m.Split('@')[1].ToString(); tradeFlowJoin.Append(subtxCode); if (_s.Count() > 1 && i < _s.Count()) { tradeFlowJoin.Append('@'); } var entry = new Tx_Entry(item.FlowCode, subtxCode, condition, m_Connection[item.CompCode]); m_LstEntrys.Add(entry); }); } if (tradeFlowJoin == null) { tradeFlowJoin.Append(""); } var node = new Tx_Node(item.FlowCode.Trim(), tradeFlowJoin.ToString(), item.CompCode.Trim()) { X = 0.0f, Y = 0.0f }; m_Nodes.Add(node); } if (m_Nodes.Count < 1) { return; } var firstNode = FindFirstNode(); firstNode.X = mc_START_X; firstNode.Y = mc_START_Y; m_LstNodes.Add(firstNode); pointList = new List <Point>(); pointList.Add(new Point(firstNode.X, firstNode.Y)); m_LayOutCount++; LayOut_NextNodes(firstNode); //m_LstHeadNode = GetHeadNodes(); //foreach (Tx_Node nextLayNode in m_Nodes) //{ // if (m_LstHeadNode != null) // { // //非起始子交易的头结点树的分布控制 // foreach (Tx_Node txNodeHaad in m_LstHeadNode) // { // if (txNodeHaad.Flow_code == nextLayNode.Flow_code) // { // txNodeHaad.X = mc_START_X + 250; // txNodeHaad.Y = mc_START_Y; // this.m_LayOutCount++; // m_LstNodes.Add(txNodeHaad); // this.LayOut_NextNodes(txNodeHaad); // } // } // } // this.LayOut_NextNodes(nextLayNode); //} }
/// <summary> /// 布局算法 确定节点位置 /// </summary> public void LayOut() { m_LayOutCount = 0; m_LstNodes = new List<Tx_Node>(); m_Nodes = new List<Tx_Node>(); m_LstEntrys = new List<Tx_Entry>(); foreach (TradeFlow item in flowList) { var tradeFlowJoin = new StringBuilder();//串连交易流程 string[] str = { "#", "=" }; var _tradeFlow = item.Trade_Flow.Trim(); var x3 = _tradeFlow.Remove(_tradeFlow.Length - 2, 2); var _s = x3.Split(str, StringSplitOptions.RemoveEmptyEntries); if (_s.Count() > 0) { var i=0; _s.ToList().ForEach(k => { i++; var m = k.Remove(k.Length - 1, 1); var condition = m.Split('@')[0].ToString(); var subtxCode = m.Split('@')[1].ToString(); tradeFlowJoin.Append(subtxCode); if (_s.Count() > 1 && i < _s.Count()) { tradeFlowJoin.Append('@'); } var entry = new Tx_Entry(item.FlowCode, subtxCode,condition, m_Connection[item.CompCode]); m_LstEntrys.Add(entry); }); } if (tradeFlowJoin == null) tradeFlowJoin.Append(""); var node = new Tx_Node(item.FlowCode.Trim(), tradeFlowJoin.ToString(), item.CompCode.Trim()) { X=0.0f, Y=0.0f }; m_Nodes.Add(node); } if (m_Nodes.Count < 1) { return; } var firstNode = FindFirstNode(); firstNode.X = mc_START_X; firstNode.Y = mc_START_Y; m_LstNodes.Add(firstNode); pointList = new List<Point>(); pointList.Add(new Point(firstNode.X, firstNode.Y)); m_LayOutCount++; LayOut_NextNodes(firstNode); //m_LstHeadNode = GetHeadNodes(); //foreach (Tx_Node nextLayNode in m_Nodes) //{ // if (m_LstHeadNode != null) // { // //非起始子交易的头结点树的分布控制 // foreach (Tx_Node txNodeHaad in m_LstHeadNode) // { // if (txNodeHaad.Flow_code == nextLayNode.Flow_code) // { // txNodeHaad.X = mc_START_X + 250; // txNodeHaad.Y = mc_START_Y; // this.m_LayOutCount++; // m_LstNodes.Add(txNodeHaad); // this.LayOut_NextNodes(txNodeHaad); // } // } // } // this.LayOut_NextNodes(nextLayNode); //} }