Buongiorno 
allora... cominciamo con un esempio :
metti questi campi nella tua classe (che eredita da form)
codice:
int initialX = 5;///posizione iniziale coordinata X mouse
int initialY = 5;///posizione iniziale coordinata Y mouse
float dimX = 10f;///dimensione iniziale X del punto
float dimY = 10f;///dimensione iniziale Y del punto
fai un override del metodo paint :
codice:
protected override void OnPaint(PaintEventArgs e)
{
e.Graphics.DrawEllipse(new Pen(Color.Black),initialX,initialY,dimX ,dimY);
base.OnPaint(e);
}
poi aggiungi un evento MouseMove del form e nel metodo scrivi :
codice:
private void Form1_MouseMove(object sender, MouseEventArgs e)
{
///prendo la posizione del cursore del mouse relativa alla form
System.Drawing.Point p = this.PointToClient(Cursor.Position);
///controllo se il tasto sx del mouse è giu'
if (e.Button == MouseButtons.Left)
{
///stabilisco inizio e fine area del punto
int IareaX = initialX;
int FareaX = initialX + Convert.ToInt32(dimX);
int IareaY = initialY;
int FareaY = initialY + Convert.ToInt32(dimY);
///controllo che il puntatore del mouse sia nell'area del punto
/// lasciando un po di margine per evitare l'uscita dall'area con il movimento su
if ((p.X < FareaX +10 && p.X > IareaX-10) && (p.Y < FareaY+10 && p.Y > IareaY-10))
{
///imposto la nuova posizione
p = this.PointToClient(Cursor.Position);
initialX = p.X;
initialY = p.Y;
///faccio in modo che il form venga ridisegnato
this.Invalidate();
}
}
}