So zeichnen Sie eine Aktualisierungslinie

Mein Ziel ist sehr einfach. Stellen Sie sich vor, Sie öffnen MSPaint, klicken auf das Linienwerkzeug, halten die Maustaste gedrückt und ziehen es herum. Es verankert die Startkoordinaten, bei denen Sie mit der Maus darauf geklickt haben, und zeichnet und zeichnet ständig eine Linie zu Ihrer aktuellen Position.

Außer ich versuche, dies in C # zu tun, funktioniert nicht so gut wie ich es mir erhoffen würde.

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

uf diese Weise bekomme ich die Linie nur einmal gezeichnet. Wenn ich DrawLine () jedoch auf ein statischeres Ereignis wie MouseUp verschiebe, wird es gezeichnet und verschwindet nach etwa einer Viertelsekunde.

Was wäre der beste Weg, um mein Ziel hier zu erreichen?

Ich würde denken, dass das Ereignis, das zum Verschwinden der Linie verwendet wird, das ist, woran ich die Zeichnung der Linie an erster Stelle anhängen möchte.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage