private void DrawDistorted(Graphics canvas, DistortionHelper distorter, IImageToViewportTransformer transformer, Pen penEdges, Brush brush, Point start, Point end) { List <PointF> curve = distorter.DistortLine(points["a"], points["b"]); List <Point> transformedCurve = transformer.Transform(curve); if (styleHelper.LineShape == LineShape.Squiggle) { canvas.DrawSquigglyLine(penEdges, start, end); } else if (styleHelper.LineShape == LineShape.Dash) { DashStyle oldDashStyle = penEdges.DashStyle; penEdges.DashStyle = DashStyle.Dash; canvas.DrawCurve(penEdges, transformedCurve.ToArray()); penEdges.DashStyle = oldDashStyle; } else { canvas.DrawCurve(penEdges, transformedCurve.ToArray()); } miniLabel.SetAttach(curve[curve.Count / 2], true); if (styleHelper.LineEnding == LineEnding.StartArrow || styleHelper.LineEnding == LineEnding.DoubleArrow) { ArrowHelper.Draw(canvas, penEdges, start, end); } if (styleHelper.LineEnding == LineEnding.EndArrow || styleHelper.LineEnding == LineEnding.DoubleArrow) { ArrowHelper.Draw(canvas, penEdges, end, start); } }
private void DrawDistortedLine(Graphics canvas, Pen pen, PointF a, PointF b, ProjectiveMapping projectiveMapping, DistortionHelper distorter, IImageToViewportTransformer transformer) { a = projectiveMapping.Forward(a); b = projectiveMapping.Forward(b); if (distorter != null && distorter.Initialized) { a = distorter.Distort(a); b = distorter.Distort(b); List <PointF> curve = distorter.DistortLine(a, b); List <Point> transformed = transformer.Transform(curve); canvas.DrawCurve(penEdges, transformed.ToArray()); } else { canvas.DrawLine(pen, transformer.Transform(a), transformer.Transform(b)); } }
private void DrawDistorted(Graphics canvas, DistortionHelper distorter, IImageToViewportTransformer transformer, Pen penEdges, Point start, Point end) { List <PointF> curve = distorter.DistortLine(points["a"], points["b"]); List <Point> transformedCurve = transformer.Transform(curve); if (styleHelper.LineShape == LineShape.Squiggle) { canvas.DrawSquigglyLine(penEdges, start, end); } else if (styleHelper.LineShape == LineShape.Dash) { DashStyle oldDashStyle = penEdges.DashStyle; penEdges.DashStyle = DashStyle.Dash; canvas.DrawCurve(penEdges, transformedCurve.ToArray()); penEdges.DashStyle = oldDashStyle; } else { canvas.DrawCurve(penEdges, transformedCurve.ToArray()); } labelMeasure.SetAttach(curve[curve.Count / 2], true); }
private bool IsPointInObject(PointF point, DistortionHelper distorter, IImageToViewportTransformer transformer) { using (GraphicsPath areaPath = new GraphicsPath()) { if (points["a"].NearlyCoincideWith(points["b"])) { areaPath.AddLine(points["a"].X, points["a"].Y, points["a"].X + 2, points["a"].Y + 2); } else { if (distorter != null && distorter.Initialized) { List <PointF> curve = distorter.DistortLine(points["a"], points["b"]); areaPath.AddCurve(curve.ToArray()); } else { areaPath.AddLine(points["a"], points["b"]); } } return(HitTester.HitTest(areaPath, point, styleHelper.LineSize, false, transformer)); } }