Как нарисовать линию обновления

Моя цель очень проста. Представьте, что вы открываете MSPaint, щелкаете по инструменту линии, удерживаете мышь и перетаскиваете ее. Он привязывает начальные координаты, где вы щелкаете мышью вниз, и постоянно рисует и перерисовывает линию к вашей текущей позиции.

За исключением того, что я пытаюсь сделать это в C #, не работает так, как я надеюсь.

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

Используя это таким образом, я получаю линию только один раз. Однако если я переместлю DrawLine () к более статичному событию, например MouseUp, оно будет рисовать его, а затем исчезнет примерно через четверть секунды.

Что было бы лучшим способом для достижения моей цели здесь?

Я бы подумал, что любое событие, используемое для исчезновения линии, - это то, к чему я бы хотел прикрепить рисунок линии.

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

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