Como passar a imagem recortada entre formulários em C# Winform aplicação?

0

Pergunta

Eu estou trabalhando em contato com o gerenciador de aplicativos de desktop em C# Windows forms e atualmente estou tentando adicionar imagem de avatar recurso de corte. A imagem que está sendo passada de uma forma para outra, sem quaisquer problemas. No entanto, a imagem após o corte não está sendo passado de volta para o formulário de login, não importa o que eu estou fazendo. Eu estava tentando mudar a imagem no formulário de Login por sobrecarga de construtor e a criação de um novo objeto sobre o recorte da imagem. Eu recebo um erro, no entanto:

Do sistema.ArgumentOutOfRangeException: "Parâmetro deve ser positivo e < Altura. (O parâmetro 'y')"

A Exceção ocorre na 'Cor pxlColor' de linha.

Cortar método onde uma imagem cortada é criado:

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

A imagem está sendo exibida corretamente no pictureBox2.O campo de imagem. Construtor do formulário de Login:

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

Eu já fiz algumas pesquisas em que o assunto e descobri que o erro mencionado anteriormente, pode ser devido a diferentes tamanhos de campos de Imagem. Depois de fazer o seu tamanho igual, um NullObjectReference ocorreu no 'pictureBoxProfileImage.Imagem = isso.croppedPicture;' linha.

Do sistema.NullReferenceException: "referência de Objeto não definida para uma instância de um objeto."

Eu tentei passar tanto de mapa de bits e Imagem de variáveis, o resultado é semelhante em ambas as situações. Qualquer ajuda seria appraciated.

Felicidades, Filip

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

Melhor resposta

0

Eu reorganizadas algumas coisas, agora é tudo o que está sendo cometido em um formulário. A imagem cortada é substituir o originalmente postado, que está sendo post através do método abaixo:

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

O problema é que ao salvar a imagem em uma tentativa de registrar-se utilizar a função abaixo:

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

a imagem é nulo, apesar de ser exibido corretamente. Devo substituir a imagem original (substituir) de alguma forma?

2021-11-13 18:55:35

Alguma idéia de como consegui-la @Steeeve ?
Filip

Em outros idiomas

Esta página está em outros idiomas

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