Exemplo n.º 1
0
        public PointF GetTextBoxSide(Point textboxIndex, TextBoxSides side)
        {
            PointF returnPoint = new PointF();

            if (side == TextBoxSides.TopLeft || side == TextBoxSides.TopMiddle || side == TextBoxSides.TopRight)
            {
                returnPoint.Y = textboxes[textboxIndex.X, textboxIndex.Y].Top;
            }
            else if (side == TextBoxSides.RightMiddle || side == TextBoxSides.LeftMiddle)
            {
                returnPoint.Y = textboxes[textboxIndex.X, textboxIndex.Y].Location.Y + textboxes[textboxIndex.X, textboxIndex.Y].Size.Height / 2;
            }
            else
            {
                returnPoint.Y = textboxes[textboxIndex.X, textboxIndex.Y].Bottom;
            }

            if (side == TextBoxSides.BottomRight || side == TextBoxSides.RightMiddle || side == TextBoxSides.TopRight)
            {
                returnPoint.X = textboxes[textboxIndex.X, textboxIndex.Y].Right;
            }
            else if (side == TextBoxSides.TopMiddle || side == TextBoxSides.BottomMiddle)
            {
                returnPoint.X = textboxes[textboxIndex.X, textboxIndex.Y].Location.X + textboxes[textboxIndex.X, textboxIndex.Y].Size.Width / 2;
            }
            else
            {
                returnPoint.X = textboxes[textboxIndex.X, textboxIndex.Y].Left;
            }

            return(returnPoint);
        }
Exemplo n.º 2
0
        public TextBoxSides OppositeSide(TextBoxSides side)
        {
            switch (side)
            {
            case (TextBoxSides.TopLeft):
                return(TextBoxSides.BottomRight);

            case (TextBoxSides.TopMiddle):
                return(TextBoxSides.BottomMiddle);

            case (TextBoxSides.TopRight):
                return(TextBoxSides.BottomLeft);

            case (TextBoxSides.RightMiddle):
                return(TextBoxSides.LeftMiddle);

            case (TextBoxSides.BottomRight):
                return(TextBoxSides.TopLeft);

            case (TextBoxSides.BottomMiddle):
                return(TextBoxSides.TopMiddle);

            case (TextBoxSides.BottomLeft):
                return(TextBoxSides.TopRight);

            default:
                return(TextBoxSides.RightMiddle);
            }
        }
Exemplo n.º 3
0
        public void ShowTextBoxPath(Node <Point> textboxNode, Color color, Pen pen)
        {
            textboxes[textboxNode.Value.X, textboxNode.Value.Y].BackColor = color;

            if (textboxNode.Children.Count > 0)
            {
                TextBoxSides connectingSide = OnWhatSide(textboxNode.Value, textboxNode.Children[0].Value);
                TextBoxSides oppositeSide   = OppositeSide(connectingSide);
                PointF       thisSide       = GetTextBoxSide(textboxNode.Value, connectingSide);
                PointF       otherSide      = GetTextBoxSide(textboxNode.Children[0].Value, oppositeSide);

                Pen p = new Pen(pen.Color);
                p.EndCap = System.Drawing.Drawing2D.LineCap.ArrowAnchor;

                gfx.DrawLine(p, thisSide, otherSide);
                ShowTextBoxPath(textboxNode.Children[0], color, pen);
            }
        }