private void DrawGridLine(Graphics canvas, DistortionHelper distorter, IImageToViewportTransformer transformer, Pen penLine, PointF a, PointF b)
 {
     if (distorter != null && distorter.Initialized)
     {
         List <PointF> curve       = distorter.DistortRectifiedLine(a, b);
         List <Point>  transformed = transformer.Transform(curve);
         canvas.DrawCurve(penLine, transformed.ToArray());
     }
     else
     {
         PointF p1 = transformer.Transform(a);
         PointF p2 = transformer.Transform(b);
         canvas.DrawLine(penLine, p1, p2);
     }
 }
        private bool IsPointOnRectifiedLine(PointF p, PointF a, PointF b, DistortionHelper distorter, IImageToViewportTransformer transformer)
        {
            if (a == b)
            {
                return(false);
            }

            using (GraphicsPath path = new GraphicsPath())
            {
                if (distorter != null && distorter.Initialized)
                {
                    List <PointF> curve = distorter.DistortRectifiedLine(a, b);
                    path.AddCurve(curve.ToArray());
                }
                else
                {
                    path.AddLine(a, b);
                }

                return(HitTester.HitTest(path, p, 1, false, transformer));
            }
        }