private Point FindLineIntersection(Line lineA, Line lineB)
        {
            if (lineA == lineB)
            {
                return(null);
            }

            Point retVal = new Point();

            Point P1 = new Point();
            Point Q1 = new Point();

            P1.X = lineA.X1;
            P1.Y = lineA.Y1;

            Q1.X = lineA.X2;
            Q1.Y = lineA.Y2;

            double a1 = Q1.Y - P1.Y;
            double b1 = P1.X - Q1.X;
            double c1 = a1 * (P1.X) + b1 * (P1.Y);

            Point P2 = new Point();
            Point Q2 = new Point();

            P2.X = lineB.X1;
            P2.Y = lineB.Y1;

            Q2.X = lineB.X2;
            Q2.Y = lineB.Y2;

            double a2 = Q2.Y - P2.Y;
            double b2 = P2.X - Q2.X;
            double c2 = a2 * (P2.X) + b2 * (P2.Y);

            double delta = a1 * b2 - a2 * b1;

            if (delta == 0)
            {
                return(null);
            }

            double xx = (b2 * c1 - b1 * c2) / delta;
            double yy = (a1 * c2 - a2 * c1) / delta;

            retVal.X = xx;
            retVal.Y = yy;

            return(retVal);
        }
 private void FindAllIntersections()
 {
     foreach (var a in allDrawnLineObjects)
     {
         foreach (var b in allDrawnLineObjects)
         {
             Point ix = FindIntersection(a, b);
             //Point ix = FindLineIntersection(a, b);
             if (ix != null)
             {
                 allIntersections.Add(ix);
             }
         }
     }
 }