Cum să treci trunchiate imagine între forme în C# aplicații Winform?

0

Problema

Lucrez la contact manager desktop aplicație în C# Windows forms și eu sunt în prezent încearcă să adăugați avatar decuparea imaginii caracteristică. Imaginea este trecut de la o formă la alta fără probleme. Cu toate acestea, imaginea după recoltare nu este trecut înapoi la formularul de logare, indiferent de ceea ce fac. Am fost încercarea de a schimba imaginea în formă de Autentificare prin supraîncărcarea un constructor și crearea unui nou obiect la decuparea imaginii. Am primi un astfel de eroare cu toate acestea:

Sistem.ArgumentOutOfRangeException: "Parametru trebuie să fie pozitiv și < Înălțime. (Parametru "y")"

Excepția apare pe Culoare pxlColor' linie.

Cultură metodă în cazul în care o imagine decupată este creat:

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

Imaginea este afișată corect pe pictureBox2.Câmpul de imagine. Constructor de formular de Autentificare:

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

Deja am făcut niște cercetări în această problemă și am aflat că eroarea menționată mai sus ar putea fi cauza pentru diferite dimensiuni de Imagine domenii. După efectuarea lor, de dimensiuni egale, o NullObjectReference a avut loc pe 'pictureBoxProfileImage.Imagine = acest lucru.croppedPicture;' linie.

Sistem.NullReferenceException: "Obiectul de referință nu setat la o instanță a unui obiect."

Am încercat trece atât Bitmap și Imagini variabile, rezultatul este similar în ambele situații. Orice ajutor ar fi appraciated.

Noroc, Filip

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

Cel mai bun răspuns

0

Am rearanjat unele lucruri, acum totul a fost comisă într-o singură formă. Imaginea decupată este înlocuirea publicat inițial unul, care este în curs de post prin metoda de mai jos:

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

Problema este că, la salvarea imaginii într-o încercare de a înregistra folosind funcție de mai jos:

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

imaginea este nul, în ciuda a fi afișate în mod corespunzător. Ar trebui să înlocuiți imaginea originală (suprascriere) într-un fel?

2021-11-13 18:55:35

Orice idei de cum să-l atingă @Steeeve ?
Filip

În alte limbi

Această pagină este în alte limbi

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