c # Как определить, была ли нажата линия (нарисована / нарисована на форме) при использовании winforms?

У меня есть приложение winforms

Вот мой код

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace WindowsFormsApplication12
{
    public partial class Form1 : Form
    {
        Graphics gr;
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            gr = this.CreateGraphics();

            MyLine myline = new MyLine();
            myline.P1 = new Point(100, 0);
            myline.P2 = new Point(200, 80);

            gr.DrawLine(new Pen(Color.Red), myline.P1,myline.P2);


            Rectangle r = new Rectangle(0, 0, 50, 50);


            gr.DrawRectangle(new Pen(Color.Teal, 5), r);

            if (r.Contains(0,25)) MessageBox.Show("within");

        }

        private void btnClear_Click(object sender, EventArgs e)
        {
            gr.Clear(this.BackColor);
        }


    }
}

class MyLine
{    
    public Point P1 {get; set;}
    public Point P2 { get; set; }
}

Моя проблема в этом ..

Я могу нарисовать прямоугольник, и я могу видеть, находится ли точка внутри него.

Поэтому я мог бы расширить программу, чтобы сказать «да», когда щелчок по форме находится внутри прямоугольника. Прямоугольник имеет функцию Contains, которая великолепна.

Но я хочу сделать то же самое для Line.

Проблема в том, что winforms не имеет класса Line. Я мог бы написать свой собственный класс Line, но проблема остается ... как узнать, попал ли на него клик?

Я заметил, что у WPF есть такой классКак распознать щелчок мышью по строке?

Но я использую winforms.

Ответы на вопрос(2)

Ваш ответ на вопрос