miércoles, 2 de febrero de 2011

Cortar Imágenes con un rectángulo

Hoy necesitaba cortar una imagen de una fotografía para dejar únicamente la cara de la persona, así que me di a la tare de buscar como cortar la imagen usando un rectangulo dobre un picturebox y recortando pegarlo en otro:


Para Cortar la Imagen se utiliza un rectángulo y en realidad es bastante sencillo de realizar.
Simplemente se utiliza el siguiente código


private void pictureBox1_MouseMove(object sender, MouseEventArgs e)
        {
            if (e.Button == MouseButtons.Left)
            {
                CordenadaX.Text = e.X.ToString();
                CordenadaY.Text = e.Y.ToString();


                pictureBoxOrigen.Refresh();
                
                int A = 250;
                int B = 50;
                int C = 150;
                int D = 200;
                try
                {
                    A = Convert.ToInt32(CordenadaX.Text);
                    B = Convert.ToInt32(CordenadaY.Text);
                    C = Convert.ToInt32(Largo.Text);
                    D = Convert.ToInt32(Ancho.Text);


                    Bitmap imagen2 = new Bitmap(C, D);
                    Graphics lienzo = Graphics.FromImage(imagen2);


                    Pen cropPen = new Pen(Color.Red, 3);
                    cropPen.DashStyle = System.Drawing.Drawing2D.DashStyle.Solid;
                   
                    Rectangle recorte = new Rectangle(A, B, C, D);
                    pictureBox1.CreateGraphics().DrawRectangle(cropPen, recorte);
                    lienzo.DrawImage(pictureBoxOrigen.Image, 0, 0, recorte, GraphicsUnit.Pixel);
                    this.pictureBoxDestino.Image = imagen2;
                }
                catch (Exception ex)
                {
                    MessageBox.Show("Surgio un Error: " + ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
            }
        }

Código Completo : Codigo Completo