2010-06-30 14 views

Répondre

3

L'article que vous avez lié semble être en C++, ce qui peut expliquer pourquoi il ne vous a pas beaucoup aidé.

Si vous créez des événements pour MouseDown et MouseUp, vous devez disposer des deux coins nécessaires pour un rectangle. De là, il s'agit de dessiner sur le formulaire. System.Drawing. * Devrait probablement être votre premier arrêt. Il y a quelques tutoriels lien ci-dessous:

Drawing with Graphics in WinForms using C#

Draw a rectangle using Winforms (StackOverflow)

Graphics Programming using C#

0

Vous avez besoin de cette 3 fonctions et variables:

private Graphics g; 
    Pen pen = new System.Drawing.Pen(Color.Blue, 2F); 
    private Rectangle rectangle; 
    private int posX, posY, width, height; 

Deuxièmement, vous devez faire une souris événement vers le bas:

private void pictureCrop_MouseDown(object sender, MouseEventArgs e) 
    { 
     if (e.Button == MouseButtons.Left) 
     { 
      posX = e.X; 
      posY = e.Y; 
     } 
    } 

Troisièmement, vous devez implemente l'événement souris vers le haut:

private void pictureCrop_MouseUp(object sender, MouseEventArgs e) 
    { 
     if (e.Button != MouseButtons.Left) 
      return; 

     if (e.X > posX && e.Y > posY) // top left to bottom right 
     { 
      width = Math.Abs(e.X - posX); 
      height = Math.Abs(e.Y - posY); 
     } 
     else if (e.X < posX && e.Y < posY) // bottom right to top left 
     { 
      width = Math.Abs(posX - e.X); 
      height = Math.Abs(posY - e.Y); 

      posX = e.X; 
      posY = e.Y; 
     } 
     else if (e.X < posX && e.Y > posY) // top right to bottom left 
     { 
      width = Math.Abs(posX - e.X); 
      height = Math.Abs(posY - e.Y); 

      posX = e.X; 
     } 
     else if (e.X > posX && e.Y < posY) // bottom left to top right 
     { 
      width = Math.Abs(posX - e.X); 
      height = Math.Abs(posY - e.Y); 

      posY = e.Y; 
     } 

     g.DrawImage(_bitmap, 0, 0); 
     rectangle = new Rectangle(posX, posY, width, height); 
     g = pictureCrop.CreateGraphics(); 
     g.DrawRectangle(pen, rectangle); 
    } 

Et pour faire en sorte que lorsque vous redimensionner ou déplacer la forme du rectangle sera là:

protected override void OnPaint(PaintEventArgs e) 
    { 
     base.OnPaint(e); 

     Graphics graph = e.Graphics; 
     graph.DrawImage(_bitmap, 0, 0); 
     Rectangle rec = new Rectangle(posX, posY, width, height); 
     graph.DrawRectangle(pen, rec); 
    }