Hier ist eine Funktion zum Berechnen ob ein Punkt auf einer Linie zwischen 2 Punkten liegt.
float DistancePointToLine(Point point, Point lineStart, Point lineEnd)
{
float a = point.X - lineStart.X;
float b = point.Y - lineStart.Y;
float c = lineEnd.X - lineStart.X;
float d = lineEnd.Y - lineStart.Y;
float dot = a * c + b * d;
float len_sq = c * c + d * d;
float param = dot / len_sq;
float xx, yy;
if (param < 0)
{
xx = lineStart.X;
yy = lineStart.Y;
}
else if (param > 1)
{
xx = lineEnd.X;
yy = lineEnd.Y;
}
else
{
xx = lineStart.X + param * c;
yy = lineStart.Y + param * d;
}
float dx = point.X - xx;
float dy = point.Y - yy;
return (float)Math.Sqrt(dx * dx + dy * dy);
}
bool hit;
float distance = DistancePointToLine(clickPoint, lineStartPoint, lineEndPoint);
hit = distance < 5; // Schwellenwert nach Bedarf ändern