Cómo pasar recortada de la imagen entre las formas en C# aplicación Winform?

0

Pregunta

Estoy trabajando en contacto con el administrador de aplicaciones de escritorio en Windows forms en C# y actualmente estoy tratando de agregar imagen de avatar función de recorte. La imagen se pasa de una forma a otra sin ningún problema. Sin embargo, la imagen después de la cosecha es no volver a pasar a la forma de inicio de sesión, no importa lo que estoy haciendo. Yo estaba tratando de cambiar la imagen en el formulario de inicio de Sesión por sobrecarga de un constructor y la creación de un nuevo objeto en el recorte de la imagen. Recibo un error de sin embargo:

Sistema.ArgumentOutOfRangeException: "Parámetro debe ser positivo y < Altura. (Parámetro 'y')"

La Excepción se produce en el Color pxlColor' línea.

Los cultivos método en el que una imagen recortada se crea:

        private void button_Crop_Image_Click(object sender, EventArgs e)
        {
            Cursor = Cursors.Default;
            Bitmap bitmap2 = new Bitmap(pictureBox1.Width, pictureBox1.Height);
            pictureBox1.DrawToBitmap(bitmap2, pictureBox1.ClientRectangle);

            Bitmap croppedImage = new Bitmap(rectW, rectH);
            for (int x = 0; x < rectW; x++)
            {
                for (int y = 0; y < rectH; y++)
                {
                    Color pxlColor = bitmap2.GetPixel(cropX + x, cropY + y);
                    croppedImage.SetPixel(x, y, pxlColor);
                }
            }

            pictureBox2.Image = (Image)croppedImage;

            Login_Register_Form login = new Login_Register_Form(croppedImage);

            pictureBox2.SizeMode = PictureBoxSizeMode.StretchImage;
        }

La imagen se muestra correctamente en los pictureBox2.El campo de la imagen. Constructor de formulario de inicio de Sesión:

        public Login_Register_Form(Bitmap croppedImage)
        {
            this.croppedPicture = (Image)croppedImage;
            pictureBoxProfileImage.Image = this.croppedPicture;
        }

Ya he hecho algunas investigaciones en la materia y se encontró que el error mencionado anteriormente, podría ser debido a los diferentes tamaños de campos de Imagen. Después de realizar su tamaño igual, un NullObjectReference ocurrió en 'pictureBoxProfileImage.Imagen = este.croppedPicture;' línea.

Sistema.NullReferenceException: "referencia a Objeto no establecida como instancia de un objeto".

He intentado pasar de mapa de bits y variables de Imagen, el resultado es similar en ambas situaciones. Cualquier ayuda sería appraciated.

Saludos, Filip

c# crop winforms
2021-11-13 13:02:55
1

Mejor respuesta

0

He reordenado algunas cosas, ahora todo se comete en un solo formulario. La imagen recortada es la sustitución de las originalmente publicado uno, que es estar en la post través del siguiente método:

    private void button_browse_Click(object sender, EventArgs e)
    {
        // select and display image in the picturebox
        OpenFileDialog opf = new OpenFileDialog();
        opf.Filter = "Select Image(*.jpg;*.png;*.gif)|*.jpg;*.png;*.gif";
        

        if(opf.ShowDialog() == DialogResult.OK)
        {
            pictureBoxProfileImage.Image = Image.FromFile(opf.FileName);
            setImage(pictureBoxProfileImage.Image);
        }
    }

El problema es que al guardar la imagen en un intento de registrar el uso de la siguiente función:

pictureBoxProfileImage.Image.Save(picture, pictureBoxProfileImage.Image.RawFormat);

la imagen es nulo, a pesar de ser visualizadas correctamente. Debo reemplazar la imagen original (sobrescribir) de alguna manera?

2021-11-13 18:55:35

Alguna idea de cómo lograr que @Steeeve ?
Filip

En otros idiomas

Esta página está en otros idiomas

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Slovenský
..................................................................................................................