Come passare immagine ritagliata tra i form in C# applicazione windows form?

0

Domanda

Sto lavorando a contatto con il gestore di desktop app in C# Windows form e attualmente sto cercando di aggiungere immagine avatar funzione di ritaglio. L'immagine è passati da una forma all'altra senza problemi. Tuttavia, l'immagine dopo il ritaglio non è passato al modulo di login, non importa quello che sto facendo. Stavo cercando di cambiare l'immagine nel form di Login da sovraccarico di un costruttore e la creazione di un nuovo oggetto su il ritaglio dell'immagine. Ricevo un errore però:

Sistema.ArgumentOutOfRangeException: "Parametro deve essere positivo e < Altezza. (Parametro ', y')”

L'Eccezione si verifica su 'Colore pxlColor' linea.

Raccolto metodo in cui un'immagine ritagliata viene creato:

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

L'immagine viene correttamente visualizzato sul pictureBox2.Il campo dell'immagine. Costruttore del form di Login:

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

Ho già fatto qualche ricerca in merito a tale questione e ha scoperto che il suddetto errore potrebbe essere dovuto a diversi formati di Immagine. Dopo aver apportato le loro dimensioni uguali, una NullObjectReference si è verificato sul 'pictureBoxProfileImage.Immagine = questo.croppedPicture;' linea.

Sistema.NullReferenceException: "riferimento a un Oggetto non impostato su un'istanza di oggetto."

Ho provato superamento di entrambe le Bitmap e Immagini variabili, il risultato è simile in entrambe le situazioni. Qualsiasi aiuto sarebbe appraciated.

Ciao Filip

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

Migliore risposta

0

Ho riarrangiato alcune cose, ora è tutto di essere impegnati in una forma. L'immagine ritagliata è la sostituzione originariamente postato, che è in fase di post utilizzando questo metodo:

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

Il problema è che al momento di salvare l'immagine in un tentativo di registrare utilizzando il seguente funzione:

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

l'immagine è null, nonostante sia correttamente visualizzato. Devo sostituire l'immagine originale (sovrascrivere) in qualche modo?

2021-11-13 18:55:35

Tutte le idee su come realizzarla @Steeeve ?
Filip

In altre lingue

Questa pagina è in altre lingue

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