Exemple #1
0
        void DrawConnectingLine(IRenderEngine engine, Task task, Task parent)
        {
            var rc1 = GetTaskRect(parent);      // parent rect
            var rc2 = GetTaskRect(task);        // task rect
            var x1  = rc1.Left + rc1.Width / 2; // parent x center
            var x2  = rc2.Left;                 // task left
            var y1  = rc1.Bottom;               // parent bottom
            var y2  = rc2.Top + rc2.Height / 2; // task y center

            // draw connecting line
            var xs = new double[] { x1, x1, x2 };
            var ys = new double[] { y1, y2, y2 };

            engine.SetStroke(new SolidColorBrush(Color.FromRgb(0, 0, 0)));
            engine.DrawLines(xs, ys);

            // draw arrow at the end
            var sz = 5;

            xs = new double[] { x2 - 2 * sz, x2, x2 - 2 * sz };
            ys = new double[] { y2 - sz, y2, y2 + sz };
            engine.SetFill(new SolidColorBrush(Color.FromRgb(0, 0, 0)));
            engine.DrawPolygon(xs, ys);
        }