/// <summary> /// Create a sample graph with edge/edge intersections and edge/group node intersections /// </summary> /// <param name="graph"></param> private void InitializeGraph(IGraph graph) { INode[] nodes = new INode[16]; int count = 0; for (int i = 1; i < 5; i++) { nodes[count++] = graph.CreateNode(new PointD(50 + 40 * i, 260)); nodes[count++] = graph.CreateNode(new PointD(50 + 40 * i, 40)); nodes[count++] = graph.CreateNode(new PointD(40, 50 + 40 * i)); nodes[count++] = graph.CreateNode(new PointD(260, 50 + 40 * i)); } for (int i = 0; i < nodes.Length; i++) { graph.AddLabel(nodes[i], "" + i); } graph.CreateEdge(nodes[0], nodes[1]); IPort p1 = graph.AddPort(nodes[0], new PointD(0, 0)); graph.SetRelativePortLocation(p1, new PointD(5, 0)); IPort p2 = graph.AddPort(nodes[1], new PointD(0, 0)); graph.SetRelativePortLocation(p2, new PointD(5, 0)); graph.CreateEdge(p1, p2); graph.CreateEdge(nodes[5], nodes[4]); graph.CreateEdge(nodes[2], nodes[3]); graph.CreateEdge(nodes[7], nodes[6]); graph.CreateEdge(nodes[2 + 8], nodes[3 + 8]); graph.CreateEdge(nodes[7 + 8], nodes[6 + 8]); graph.CreateEdge(nodes[0 + 8], nodes[1 + 8]); graph.CreateEdge(nodes[5 + 8], nodes[4 + 8]); INode n1 = graph.CreateNode(new PointD(300, 150)); INode n2 = graph.CreateNode(new PointD(400, 150)); INode n3 = graph.CreateNode(new PointD(500, 150)); graph.CreateEdge(n1, n3); INode groupNode = graph.CreateGroupNode(); graph.AddLabel(groupNode, "Group Node", InteriorStretchLabelModel.North); graph.SetParent(n2, groupNode); graph.AdjustGroupNodeLayout(groupNode); graphControl.UpdateContentRect(); }
public static void AdjustGroupNodeBounds(this IGraph graph, INode node) { graph.AdjustGroupNodeLayout(node); }