2010-06-30 48 views

回答

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