Jak projít oříznutý snímek mezi formy v C# Winform aplikace?

0

Otázka

Pracuji na contact manager desktop aplikace v C# Windows forms a já jsem v současné době snaží přidat avatar image oříznutí funkce. Obraz je předán z jedné formy do druhé bez problémů. Nicméně, snímek po oříznutí není předán zpět na přihlašovací formulář, bez ohledu na to, co dělám. Snažil jsem se změnit obrázek na Přihlašovací formulář přetížení konstruktoru a vytváření nového objektu na oříznutí obrazu. Dostávám takové chyby však:

Systém.ArgumentOutOfRangeException: "Parametr musí být kladný a < Výška. (Parametr "y")"

Výjimka dochází, na Barvu pxlColor' line.

Plodiny metoda, kde oříznuté obraz je vytvořen:

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

Obraz je správně zobrazen na pictureBox2.Obraz pole. Konstruktor z Přihlašovacího formuláře:

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

Už jsem udělal nějaký výzkum v této věci a zjistil, že výše uvedené chyby by mohlo být způsobeno různých velikostí obrazového pole. Po provedení jejich velikost je stejná, NullObjectReference došlo na pictureBoxProfileImage.Image=.croppedPicture;' line.

Systém.NullReferenceException: "odkaz na Objekt není nastaven na instanci objektu."

Snažil jsem se kolem obou Bitmap a Obrazových proměnných, výsledek je podobný v obou případech. Jakýkoliv pomoci chtěl bych být appraciated.

Na zdraví, Filip

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

Nejlepší odpověď

0

Přesunul jsem některé věci, teď je to všechno je spáchán v jedné podobě. Oříznutý snímek je nahrazení původně napsal jeden, který je post prostřednictvím níže metoda:

    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 při ukládání snímku ve snaze zaregistrovat pomocí níže uvedené funkce:

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

obraz je null, přesto, že je správně zobrazí. Měl jsem nahradit původní obraz (přepsat) nějakým způsobem?

2021-11-13 18:55:35

Nějaké nápady, jak toho dosáhnout @Steeeve ?
Filip

V jiných jazycích

Tato stránka je v jiných jazycích

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