Cómo dibujar una línea de actualización

Mi objetivo es muy simple. Imagine abrir MSPaint, hacer clic en la herramienta de línea, mantener presionado el mouse y arrastrarlo. Ancla las coordenadas iniciales donde hizo clic con el mouse hacia abajo y constantemente dibuja y vuelve a dibujar una línea a su posición actual.

Excepto que tratar de hacer esto en C # no funciona tan bien como esperaba.

[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);
}

Utilizándolo de esta manera, solo obtengo la línea dibujada una vez. Sin embargo, si muevo DrawLine () a un evento más estático como MouseUp, lo dibujará y luego desaparecerá después de aproximadamente un cuarto de segundo.

¿Cuál sería la mejor manera de lograr mi objetivo aquí?

Creo que cualquier evento que se esté utilizando para hacer que la línea desaparezca es a lo que me gustaría unir el dibujo de la línea en primer lugar.

Respuestas a la pregunta(1)

Su respuesta a la pregunta