Wie zeichnet man eine einzelne Linie mit MouseMove Event

Ich versuche mit @ eine einzelne Linie zu zeichnOnMouseMove() Veranstaltung. Mein Problem ist, dass jedes Mal, wenn ich die Maus bewege, eine Spur hinterlässt. Ich habe versucht, die Aktualisierungsmethode zu verwenden, aber wenn ich die Maus nicht mehr bewege, ist die Linie verschwunden. Ich möchte nicht, dass die Linie gezogen wirdOnPaint();, Ich möchte es nur zeichnenOnMouseMove().

BEARBEITEN Ich verwende ein transparentes Bedienfeld (cp.ExStyle | = 0x20;), daher kann ich das @ nicht verwendegraphics.Clear() undBackColor()

Hier ist ein Beispielbild ohne dasRefresh():

Hier ist mein Code:

private void panel1_MouseMove(object sender, MouseEventArgs e)
{  
   Graphics g = panel1.CreateGraphics();

   g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias;
   using (var p = new Pen(Color.Black, 3))
   {
      p.StartCap = System.Drawing.Drawing2D.LineCap.ArrowAnchor;
      p.EndCap = System.Drawing.Drawing2D.LineCap.ArrowAnchor;

      g.DrawLine(p, st, e.Location);
   }
   Thread.Sleep(30);
   Invalidate();
   //this.Refresh();

   g.Dispose();
}

Grüß

Antworten auf die Frage(10)

Ihre Antwort auf die Frage