Я хочу нарисовать линию в bmp, которая находится в PictureBox
с Graphic.DrawLine()
, которую я могу перемещать мышью. Я не могу найти какую-либо функцию, чтобы проверить, находится ли мышь в строке или нет. Я нашел много методов, чтобы проверить, находится ли мышь над Graphic.FillPolygon()
, но нет ни одного около DrawLine()
. Есть ли хорошее решение для проверки?Мышь захвата, когда она находится над строкой (Graphic.DrawLine())
Edit: Так по предложению я сделал такую функцию:
private bool IsPointInPolygon4(Point[] poly, Point p)
{
System.Drawing.Drawing2D.GraphicsPath test = new System.Drawing.Drawing2D.GraphicsPath();
if (poly.Length == 2) // it means there are 2 points, so it's line not the polygon
{
test.AddLine(poly[0], poly[1]);
if (test.IsVisible(p, g))
{
MessageBox.Show("You clicked on the line, congratulations", "Info", MessageBoxButtons.OK, MessageBoxIcon.Information);
test.Dispose();
return true;
}
}
else
{
test.AddPolygon(poly);
if (test.IsVisible(p, g))
{
MessageBox.Show("You clicked on the polygon, congratulations", "Info", MessageBoxButtons.OK, MessageBoxIcon.Information);
return true;
}
}
return false;
}
Он отлично работает для полигонов. Но я все еще не могу получить событие мыши на линии. Какие-либо предложения?
Всегда ли это горизонтальная или вертикальная линия, никаких других углов? –
no, unfortunatelly Это может быть любой угол, более того, я хочу добавить функцию, чтобы изменить угол, когда кто-то поймал вершину. – Blabla