Wie zeichnet man eine einzelne Zeile mit MouseMove-Ereignis

Ich versuche, zeichnen Sie eine einzelne Zeile mit OnMouseMove() Veranstaltung. Mein Problem ist, dass jedesmal, wenn ich die Maus bewegen, Es hinterlässt eine Spur. Ich habe versucht, verwenden Sie die refresh-Methode, aber wenn ich die Maus nicht mehr bewegen, die Linie ist Weg. Ich will nicht, dass die Linie gezeichnet werden OnPaint(); will einfach Nur, um es zu zeichnen OnMouseMove().

EDIT: ich bin mit einem transparenten panel(cp.ExStyle |= 0x20;), so kann ich nicht verwenden, die graphics.Clear() und BackColor()

Hier ein Beispiel-Bild, ohne die Refresh():

Wie zeichnet man eine einzelne Zeile mit MouseMove-Ereignis

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

Hinsichtlich

Sie können nicht diese Arbeit machen. Fix: social.msdn.microsoft.com/forums/en-US/winforms/thread/...

InformationsquelleAutor Rye | 2010-09-15

Schreibe einen Kommentar