private Point IntersectionPoint(Rectangle rect)
        {
            Point result   = Point.Empty;
            Point LeftUp   = new Point(rect.X - 5, rect.Y - 5);
            Point LeftDown = new Point(rect.X - 5, rect.Y + rect.Height + 10);

            Point RightUp   = new Point(rect.X + 5 + rect.Width, rect.Y - 5);
            Point RightDown = new Point(rect.X + rect.Width + 10, rect.Y + rect.Height + 10);

            Diagram.NET.element.MathHelper.pt point;

            //Верхний
            Diagram.NET.element.MathHelper.segment s1 = new Diagram.NET.element.MathHelper.segment(LeftUp, RightUp);
            Diagram.NET.element.MathHelper.segment s2 = new Diagram.NET.element.MathHelper.segment(this.line1.Point1, this.line1.Point2);
            point = Diagram.NET.element.MathHelper.segments_intersection(s1, s2);
            if (point != null)
            {
                return(new Point((int)point.x, (int)point.y));
            }


            //Правый
            s1    = new Diagram.NET.element.MathHelper.segment(RightUp, RightDown);
            point = Diagram.NET.element.MathHelper.segments_intersection(s1, s2);
            if (point != null)
            {
                return(new Point((int)point.x, (int)point.y));
            }

            //Нижний
            s1    = new Diagram.NET.element.MathHelper.segment(RightDown, LeftDown);
            point = Diagram.NET.element.MathHelper.segments_intersection(s1, s2);
            if (point != null)
            {
                return(new Point((int)point.x, (int)point.y));
            }

            //Левый
            s1    = new Diagram.NET.element.MathHelper.segment(LeftDown, LeftUp);
            point = Diagram.NET.element.MathHelper.segments_intersection(s1, s2);
            if (point != null)
            {
                return(new Point((int)point.x, (int)point.y));
            }


            return(result);
        }
        private Point IntersectionPoint(Rectangle rect)
        {
            Point result = Point.Empty;
            Point LeftUp = new Point(rect.X-5, rect.Y-5);
            Point LeftDown = new Point(rect.X-5, rect.Y + rect.Height+10);

            Point RightUp = new Point(rect.X+5 + rect.Width, rect.Y-5);
            Point RightDown = new Point(rect.X + rect.Width+10, rect.Y + rect.Height+10);

            Diagram.NET.element.MathHelper.pt point;

            //Верхний
            Diagram.NET.element.MathHelper.segment s1 = new Diagram.NET.element.MathHelper.segment(LeftUp, RightUp);
            Diagram.NET.element.MathHelper.segment s2 = new Diagram.NET.element.MathHelper.segment(this.line1.Point1, this.line1.Point2);
            point = Diagram.NET.element.MathHelper.segments_intersection(s1,s2);
            if (point != null) return new Point((int)point.x, (int)point.y);
            

            //Правый
            s1 = new Diagram.NET.element.MathHelper.segment(RightUp, RightDown);
            point = Diagram.NET.element.MathHelper.segments_intersection(s1, s2);
            if (point != null) return new Point((int)point.x, (int)point.y);
            
            //Нижний
            s1 = new Diagram.NET.element.MathHelper.segment(RightDown, LeftDown);
            point = Diagram.NET.element.MathHelper.segments_intersection(s1, s2);
            if (point != null) return new Point((int)point.x, (int)point.y);
            
            //Левый
            s1 = new Diagram.NET.element.MathHelper.segment(LeftDown, LeftUp);
            point = Diagram.NET.element.MathHelper.segments_intersection(s1, s2);
            if (point != null) return new Point((int)point.x, (int)point.y);
            

            return result;
        }