web-dev-qa-db-fra.com

charger une image bitmap dans un formulaire Windows à l'aide du dialogue de fichier ouvert!

J'ai besoin d'ouvrir l'image bitmap sous la forme de fenêtre en utilisant le dialogue de fichier ouvert (je le chargerai à partir du lecteur).

 private void button1_Click(object sender, EventArgs e)
        {
            OpenFileDialog dlg = new OpenFileDialog();

            dlg.Title = "Open Image";
            dlg.Filter = "bmp files (*.bmp)|*.bmp";

            if (dlg.ShowDialog() == DialogResult.OK)
            {                     
            PictureBox PictureBox1 = new PictureBox();                    
                PictureBox1.Image(dlg.FileName);
            }

            dlg.Dispose();
        }
14
raghu

Vous devez créer une instance de la classe Bitmap , à l'aide du constructeur surcharge qui charge une image à partir d'un fichier sur le disque. Au moment où votre code est écrit, vous essayez d'utiliser le PictureBox.Imageproperty comme s'il s'agissait d'une méthode.

Modifiez votre code pour qu'il ressemble à ceci (en tirant également parti de using pour garantir une élimination appropriée, plutôt que d'appeler manuellement la méthode Dispose):

private void button1_Click(object sender, EventArgs e)
{
    // Wrap the creation of the OpenFileDialog instance in a using statement,
    // rather than manually calling the Dispose method to ensure proper disposal
    using (OpenFileDialog dlg = new OpenFileDialog())
    {
        dlg.Title = "Open Image";
        dlg.Filter = "bmp files (*.bmp)|*.bmp";

        if (dlg.ShowDialog() == DialogResult.OK)
        {
            PictureBox PictureBox1 = new PictureBox();

            // Create a new Bitmap object from the picture file on disk,
            // and assign that to the PictureBox.Image property
            PictureBox1.Image = new Bitmap(dlg.FileName);
        }
    }
}

Bien entendu, cela ne va pas afficher l'image n'importe où dans votre formulaire, car le contrôle de zone d'image que vous avez créé n'a pas été ajouté au formulaire. Vous devez ajouter le nouveau contrôle de zone d'image que vous venez de créer à la collection Controls du formulaire à l'aide de la méthode Add . Notez la ligne ajoutée au code ci-dessus ici:

private void button1_Click(object sender, EventArgs e)
{
    using (OpenFileDialog dlg = new OpenFileDialog())
    {
        dlg.Title = "Open Image";
        dlg.Filter = "bmp files (*.bmp)|*.bmp";

        if (dlg.ShowDialog() == DialogResult.OK)
        {
            PictureBox PictureBox1 = new PictureBox();
            PictureBox1.Image = new Bitmap(dlg.FileName);

            // Add the new control to its parent's controls collection
            this.Controls.Add(PictureBox1);
        }
    }
}
29
Cody Gray

Fonctionne bien. Essaye ça,

private void addImageButton_Click(object sender, EventArgs e)
{
    OpenFileDialog of = new OpenFileDialog();
    //For any other formats
    of.Filter = "Image Files (*.bmp;*.jpg;*.jpeg,*.png)|*.BMP;*.JPG;*.JPEG;*.PNG"; 
    if (of.ShowDialog() == DialogResult.OK)
    {
        pictureBox1.ImageLocation = of.FileName;

    }
}
7
Zero

Vous devriez essayer de: 

  • Créez la boîte à images de manière visuelle (c'est plus facile)
  • Définissez la propriété Dock de picturebox sur Fill (si vous souhaitez que l'image remplisse le formulaire)
  • Définissez SizeMode de la boîte à images sur StretchImage

Finalement:

private void button1_Click(object sender, EventArgs e)
{
    OpenFileDialog dlg = new OpenFileDialog();
    dlg.Title = "Open Image";
    dlg.Filter = "bmp files (*.bmp)|*.bmp";
    if (dlg.ShowDialog() == DialogResult.OK)
    {                     
        PictureBox1.Image = Image.FromFile(dlg.Filename);
    }
    dlg.Dispose();
}
6
Marco
private void button1_Click(object sender, EventArgs e)
{
    OpenFileDialog open = new OpenFileDialog();
    if (open.ShowDialog() == DialogResult.OK)
        pictureBox1.Image = Bitmap.FromFile(open.FileName);
}
2
tanjila

Vous pouvez aussi essayer comme ça, PictureBox1.Image = Image.FromFile("<your ImagePath>" or <Dialog box result>);

PictureBox.Image est une propriété, pas une méthode. Vous pouvez le définir comme ceci:

PictureBox1.Image = System.Drawing.Image.FromFile(dlg.FileName);
1
hemp

Vous pouvez essayer ce qui suit:

private void button1_Click(object sender, EventArgs e)
    {
        OpenFileDialog fDialog = new OpenFileDialog();
        fDialog.Title = "Select file to be upload";
        fDialog.Filter = "All Files|*.*";
        //  fDialog.Filter = "PDF Files|*.pdf";
        if (fDialog.ShowDialog() == DialogResult.OK)
        {
            textBox1.Text = fDialog.FileName.ToString();
        }
    }
1
sukhdeep

C'est simple. Il suffit d'ajouter:

PictureBox1.BackgroundImageLayout = ImageLayout.Zoom;
0
Madhukar Hiriadka