public void DrawRelationship(IRenderer Renderer) { NodeRelationship rel = TreeView.Relationship; if (rel == null) { return; } Control sender = ExtractCoreControl(rel.Sender); List <Control> receivers = new List <Control>(); foreach (Block receiver in rel.Receivers) { receivers.Add(ExtractCoreControl(receiver)); } List <int> Ys = new List <int>(); List <int> Xs = new List <int>(); Ys.Add(sender.Bounds.CenterY); Xs.Add(sender.Bounds.Right); foreach (Control c in receivers) { Ys.Add(c.Bounds.CenterY); Xs.Add(c.Bounds.Right); } int yMin = 0; int yMax = 0; FindMinMaxY(Ys, out yMin, out yMax); int x = FindMaxWidth() + ArrowRightMargin; ILineStyleInfo style; if (rel.Direction) { style = DefaultLineStyle; } else { style = DefaultReverseLineStyle; } IDrawOperations op = Renderer.DrawOperations; op.DrawLine(x, yMin, x, yMax, style); op.DrawLine(Xs[0] + 2, Ys[0], x, Ys[0], style); for (int i = 1; i < Xs.Count; i++) { op.DrawLine(Xs[i] + 3, Ys[i], x, Ys[i], style); if (rel.Direction) { DrawArrow(Renderer, Xs[i] + 2, Ys[i]); } else { op.DrawLine(Xs[i] + 3, Ys[i] - 4, Xs[i] + 3, Ys[i] + 4, style); } } if (rel.Direction) { op.DrawLine(Xs[0] + 1, Ys[0] - 4, Xs[0] + 1, Ys[0] + 4, style); } else { DrawArrow(Renderer, Xs[0] + 2, Ys[0]); } }
private void FillOurTreeView() { #region Old way //TreeViewNode t1 = new TreeViewNode("test1"); //treeViewControl1.Root.Children.Add(t1); //TreeViewNode t11 = new TreeViewNode("subtest11"); //t1.VMembers.Children.Add(t11); //TreeViewNode t12 = new TreeViewNode("subtest12"); //t1.VMembers.Children.Add(t12); //TreeViewNode t2 = new TreeViewNode("test2"); //treeViewControl1.Root.Children.Add(t2); //t2.MyNodeControl.TreeLineStyle = RedLineStyle; //TreeViewNode t21 = new TreeViewNode("subtest21"); //t2.VMembers.Children.Add(t21); //TreeViewNode t22 = new TreeViewNode("subtest22"); //t2.VMembers.Children.Add(t22); ////t21.VMembers.Children.Add(new SampleRootBlock()); //TreeViewNode t211 = new TreeViewNode("subtest211"); //t21.VMembers.Children.Add(t211); //// t21.HMembers.Children.Add(new ButtonBlock("Hello")); #endregion #region New way TreeViewNode t1 = treeViewControl1.AddNode("test1"); TreeViewNode t11 = t1.AddNode("subtest11"); TreeViewNode t12 = t1.AddNode("subtest12"); TreeViewNode t2 = treeViewControl1.AddNode("test2"); TreeViewNode t21 = t2.AddNode("subtest21"); TreeViewNode t211 = t21.AddNode("subtest211"); TreeViewNode t22 = t2.AddNode("subtest22"); #endregion NodeRelationship r = new NodeRelationship(); r.Sender = t11; r.Receivers = new List<Block>(); r.Receivers.Add(t22); r.Receivers.Add(t21); treeViewControl1.Root.Relationship = r; }