Comment passer recadrée de l'image entre les formes en C# Winform application?

0

La question

Je suis en train de travailler sur le gestionnaire de contacts de bureau application en C# Windows forms et je suis en train d'essayer d'ajouter un avatar image de la fonction de recadrage. L'image qui est passée d'une forme à une autre sans aucun problème. Cependant, l'image après le recadrage n'est pas passé pour le formulaire de connexion, peu importe ce que je fais. J'ai essayé de changer l'image dans le formulaire de Connexion par la surcharge d'un constructeur et de la création d'un nouvel objet sur le recadrage de l'image. Je reçois une erreur cependant:

Système.ArgumentOutOfRangeException: "Paramètre doit être positive et < Hauteur. (Paramètre de 'y')”

L'Exception se produit sur la Couleur de pxlColor en ligne".

Culture une méthode par laquelle une image recadrée est créé:

        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'image est correctement affiché sur pictureBox2.Champ de l'Image. Constructeur de formulaire de Connexion:

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

J'ai déjà fait quelques recherches sur cette question et a découvert que cette erreur peut être due à différentes tailles de champs Image. Après avoir fait leur taille égale, une NullObjectReference s'est produite sur " pictureBoxProfileImage.Image = ce.croppedPicture; ligne.

Système.NullReferenceException: "la référence d'Objet n'est pas définie à une instance d'un objet."

J'ai essayé de passer les images Bitmap et les variables d'Image, le résultat est similaire dans les deux situations. Toute aide serait appraciated.

Cheers, Filip

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

La meilleure réponse

0

J'ai réarrangé certaines choses, maintenant, tout est commise dans un formulaire. L'image recadrée est le remplacement de l'posté une, qui est en cours de post via la méthode ci-dessous:

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

Le problème est que, lors de l'enregistrement de l'image dans une tentative pour vous inscrire ci-dessous à l'aide de la fonction:

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

l'image est nulle, en dépit d'être affichés correctement. Dois-je remplacer l'image d'origine (à écraser), d'une certaine façon?

2021-11-13 18:55:35

Toutes les idées de la manière de l'atteindre @Steeeve ?
Filip

Dans d'autres langues

Cette page est dans d'autres langues

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