Comment tracer une ligne à l'aide d'Événement MouseMove

Je suis en train de tracer une ligne à l'aide de OnMouseMove() événement. Mon Problème est que à chaque fois que je bouge la souris, Elle laisse une trace. J'ai essayé d'utiliser la méthode refresh, mais quand j'ai arrêter le déplacement de la souris, la ligne a disparu. Je ne veux pas la ligne à tracer OnPaint();, Juste envie de le dessiner OnMouseMove().

EDIT: je suis à l'aide d'un panneau transparent(cp.ExStyle |= 0x20;), donc je ne peux pas utiliser le graphics.Clear() et BackColor()

Voici une Image de l'Échantillon sans le Refresh():

Comment tracer une ligne à l'aide d'Événement MouseMove

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

Ce qui concerne

Vous ne pouvez pas faire ce travail. Corrigé: social.msdn.microsoft.com/forums/en-US/winforms/thread/...

OriginalL'auteur Rye | 2010-09-15