c#窗口形式的裁剪区域选择控件(如photoshop)

时间:2012-03-06 19:48:59

标签: c#-4.0

如何在寡妇形式的应用程序中开发像c#4.0中的photoshop那样的裁剪选择控件。

我在c#4.0中有一个可以裁剪图像的Windows窗体应用程序。首先,您必须使用鼠标绘制一个矩形来选择裁剪区域。

  private Point _pt;
  private Point _pt2;
   private void picBoxImageProcessing_MouseDown(object sender, MouseEventArgs e)
    {

   if (e.Button == MouseButtons.Left)
   {
       int ix = (int)(e.X / _zoom);
       int iy = (int)(e.Y / _zoom);

       //reset _pt2
       _pt2 = new Point(0, 0);
       _pt = new Point(ix, iy);

       // pictureBox1.Invalidate();
       picBoxImageProcessing.Invalidate();
   }
}

 private void picBoxImageProcessing_MouseUp(object sender, MouseEventArgs e)
 {
    if (e.Button == MouseButtons.Left && _selecting)
    {
       _selecting = false;
    }
 }

  private void picBoxImageProcessing_Paint(object sender, PaintEventArgs e)
  {


     if (_selecting &&_pt.X >= 0 && _pt.Y >= 0 && _pt2.X >= 0 && _pt2.Y >= 0)
        {

            e.Graphics.DrawRectangle(pen, _pt.X * _zoom, _pt.Y * _zoom, 
                      (_pt2.X - _pt.X)          *         _zoom, (_pt2.Y - _pt.Y) * _zoom);
         }
   } 

       private void picBoxImageProcessing_MouseMove(object sender, MouseEventArgs e)
      {


       if (e.Button == MouseButtons.Left)
        {
         _selecting = true;
         int ix = (int)(e.X / _zoom);
         int iy = (int)(e.Y / _zoom);

         _pt2 = new Point(ix, iy);

         //  pictureBox1.Invalidate();
           picBoxImageProcessing.Invalidate();
         }
     }

通过鼠标拖动绘制矩形没有问题。但如果我想改变矩形的高度或宽度,那么我必须绘制一个我不想要的新矩形。我想通过修改绘制的矩形来改变矩形的高度和宽度,而不是绘制一个新的矩形。 我不想知道如何裁剪。我需要在图像上绘制一个可调整大小的矩形,就像我们在photoshop中所做的那样。

所以我需要一个裁剪选择控件,比如photoshop的裁剪控件。

0 个答案:

没有答案