2010-06-30 2 views

ответ

3

Связанная с вами статья представляет собой C++, что может объяснить, почему это вам не очень помогает.

Если вы создаете события для MouseDown и MouseUp, у вас должны быть две угловые точки, необходимые для прямоугольника. Оттуда, это вопрос рисования формы. System.Drawing. * Вероятно, будет вашей первой остановкой. Там есть несколько учебников связаны ниже:

Drawing with Graphics in WinForms using C#

Draw a rectangle using Winforms (StackOverflow)

Graphics Programming using C#

0

вам это нужно 3 функции и переменные:

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

Секонд вам нужно сделать мышь вниз:

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

В-третьих, вам нужно implemente мыши на событие:

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

И для того, чтобы при изменении размера или переместить форму прямоугольника будет там:

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