Ako prejsť orezaný obrázok medzi formami v C# Winform žiadosti?

0

Otázka

Pracujem na contact manager desktop aplikáciu v C# Windows formy a ja som v súčasnej dobe snaží pridať snímku avatar orezanie funkciu. Obraz sa prenáša z jednej formy na inú bez akýchkoľvek problémov. Avšak, obrázka po orezaní nie je prešla späť do prihlasovacieho formulára, bez ohľadu na to, čo robím. Snažil som sa zmeniť obrázok v Prihlasovací formulár preťaženiu a konštruktéra a vytvoriť nový objekt, na orezanie obrázka. Som prijať takúto chybu, avšak:

Systému.ArgumentOutOfRangeException: "Parameter musí byť kladný a < Výšky. (Parameter 'y')"

Výnimkou vyskytuje na 'Color pxlColor línie".

Plodín metóda, kde orezanie obrázku je vytvorené:

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

Obrázok je správne zobrazené na pictureBox2.Obrázok oblasti. Constructor z Prihlasovací formulár:

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

Ja som už urobil nejaký výskum v tejto veci, a zistil, že vyššie uvedené chyba môže byť v dôsledku rôznych veľkostí Obrazu polia. Po tom, čo ich veľkosť je rovnaká, a NullObjectReference nastala na 'pictureBoxProfileImage.Obrázok = to.croppedPicture;' line.

Systému.NullReferenceException: "odkaz na Objekt nie je nastavený na inštanciu objektu."

Snažil som sa absolvovaní oboch Bitmap a Obraz premenných, výsledok je podobný v oboch situáciách. Pomôcť by appraciated.

Na zdravie, Filip

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

Najlepšiu odpoveď

0

Som presunutých niektoré veci, teraz je to všetko spáchané v jednej forme. Orezaný obrázok je výmena pôvodne publikované jeden, ktorý sa príspevok prostredníctvom nižšie metóda:

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

Problém je, že pri ukladaní v snahe zaregistrujte pomocou nižšie funkcia:

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

obrázok je null, napriek tomu, že je správne zobrazené. By som sa mal nahradiť pôvodný obraz (prepísať) nejakým spôsobom?

2021-11-13 18:55:35

Akékoľvek myšlienky o tom, ako ho dosiahnuť @Steeeve ?
Filip

V iných jazykoch

Táto stránka je v iných jazykoch

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