Como desenhar uma linha de atualização

Meu objetivo é muito simples. Imagine abrir o MSPaint, clicar na ferramenta de linha, mantendo o mouse pressionado e arrastando-o. Ele ancora as coordenadas iniciais onde você clicou o mouse para baixo e constantemente desenha e redesenha uma linha para sua posição atual.

Exceto que tentar fazer isso em C # não está funcionando tão bem quanto eu esperava.

[DllImport("user32.dll")]
static extern IntPtr GetDC(IntPtr hWnd);
[DllImport("User32.dll")]
static extern int ReleaseDC(IntPtr hwnd, IntPtr dc);

protected override void OnPaint(PaintEventArgs e)
{
    endingPoint = GetMouseCoords();
    DrawLine(startingPoint, endingPoint);
}

private void DrawLine(Point startingCoords, Point endingCoords)
{
    IntPtr desktop = GetDC(IntPtr.Zero);
    Pen pen = new Pen(Brushes.Red, 3);
    using (Graphics g = Graphics.FromHdc(desktop))
    {
        g.DrawLine(pen, startingCoords.X, startingCoords.Y, endingCoords.X, endingCoords.Y);
        g.Dispose();
    }
    ReleaseDC(IntPtr.Zero, desktop);
}

Usando dessa maneira, eu só traço a linha uma vez. No entanto, se eu mover o DrawLine () para um evento mais estático como o MouseUp, ele será desenhado e desaparecerá após cerca de um quarto de segundo.

Qual seria a melhor maneira de realizar meu objetivo aqui?

Eu pensaria que, seja qual for o evento que está sendo usado para fazer a linha desaparecer, é para isso que eu gostaria de anexar o desenho da linha.

questionAnswers(1)

yourAnswerToTheQuestion