Вот мой код. «Pt1» - это список начальной точки линии, а «Pt2» - это список конечных точек линии. Я уже могу нарисовать линию и определить точки пересечения. Моя единственная проблема - как нарисовать прыжок или кривую / дугу между этими двумя точками.
private void Form1_Paint(object sender, PaintEventArgs e)
{
e.Graphics.SmoothingMode = SmoothingMode.HighQuality;
for (int i = 0; i < Pt1.Count; i++)
{
try
{
bool segments_intersect;
PointF first = Intersection;
FindIntersection(Pt1[i], Pt2[i], NewPt1, NewPt2, out LinesIntersect, out segments_intersect, out Intersection, out Close1, out Close2);
//here is the jump event
if (segments_intersect)
{
Point[] pt =
{
//I would like to know the formula here how to make a curve by adding a points in these line
new Point(
Convert.ToInt32(
first.X * Pt1[i]
.X / 2),
Convert.ToInt32(first.Y - 5)),
new Point(Convert.ToInt32(first.X), Convert.ToInt32(first.Y)),
new Point(Convert.ToInt32(first.X - 5), Convert.ToInt32(first.Y - 5)),
};
e.Graphics.DrawLine(Pens.Blue, Pt1[i], Pt2[i]);
e.Graphics.DrawCurve(Pens.Blue, pt);
}
else
{
//if there is no intersection
e.Graphics.DrawLine(Pens.Blue, Pt1[i], Pt2[i]);
}
}
catch
{
e.Graphics.DrawLine(Pens.Blue, Pt1[i], Pt2[i]);
}
}
if (IsDrawing)
{
e.Graphics.DrawLine(Pens.Red, NewPt1, NewPt2);
}
}
Вот код. У меня уже был класс для пересечения. Моя проблема только в том, как нарисовать кривую в пересекающихся точках.