web-dev-qa-db-fra.com

Chargement d'une image PictureBox à partir d'un fichier de ressources avec un chemin d'accès (partie 3)

Je comprends que cette question a déjà été posée (et répondue). Cependant, aucune des solutions ne fonctionne pour moi.

Vous trouverez ci-dessous une capture d'écran de toutes les pièces pertinentes du puzzle:

Capture d'écran http://dinosaur-island.com/PlantPictureBoxScreenCap.jpg

Comme vous pouvez le constater, de nombreuses bitmaps de plantes sont chargées en tant que ressources dans le dossier Images. Il existe un formulaire avec une boîte d'image nommée "PlantPicture". Il existe une chaîne dont le chemin est correct (car je l’ai vérifiée dans le débogueur):

            PicPath = PicPath+".bmp";

Capture d'écran http://dinosaur-island.com/PlantDebugger.jpg

J'ai essayé de nombreuses façons de charger, lancer, etc., etc.

21
zetar

Le chemin devrait être quelque chose comme: "Images\a.bmp". (Notez l'absence de barre oblique, et les barres obliques étant retour barres obliques.)

Et alors:

pictureBox1.Image = Image.FromFile(@"Images\a.bmp");

Je viens d'essayer pour être sûr, et ça marche. C’est d’autre part l’autre réponse que vous avez: "copier toujours".

42
ispiro

Ok ... alors vous devez d'abord importer l'image dans votre projet

1) Sélectionnez la zone d’image dans Conception de formulaire.

2) Ouvrir les tâches de PictureBox (c'est la petite flèche imprimée à droite sur le bord de la boîte à images)

3) Cliquez sur "Choisir une image ..."

4) Sélectionnez la deuxième option "Fichier de ressources du projet:" (cette option créera un dossier appelé "Ressources" auquel vous pourrez accéder avec Properties.Resources).

5) Cliquez sur Importer et sélectionnez votre image sur votre ordinateur (une copie de l'image portant le même nom que l'image sera maintenant envoyée dans le dossier Ressources créé à l'étape 4).

6) Cliquez sur ok

L'image est maintenant dans votre projet et vous pouvez l'utiliser avec la commande Propriétés. Il vous suffit de taper ce code pour changer l'image à partir de picturebox:

pictureBox1.Image = Properties.Resources.myimage;

Remarque: myimage représente le nom de l'image ... après avoir tapé le point après Ressources, dans vos options, ce sera votre fichier image importé.

12
Alin Leon

Cela dépend de votre chemin de fichier. Pour moi, le répertoire actuel était [project]\bin\Debug _, j'ai donc dû passer deux fois au dossier parent.

Image image = Image.FromFile(@"..\..\Pictures\"+text+".png");
this.pictureBox1.Image = image;

Pour trouver votre répertoire actuel, vous pouvez créer une étiquette factice appelée label2 et écrire ceci:

this.label2.Text = System.IO.Directory.GetCurrentDirectory();
6
chenjesu

Régler "Copier dans le répertoire de sortie" sur "Copier toujours" ou "Copier s'il est plus récent" peut vous aider.

Votre PicPath est un chemin relatif converti en chemin absolu lors du chargement de l'image. Très probablement, vous verrez qu'il n'y a pas d'images à l'emplacement spécifié si vous utilisez Path.GetFullPath(PicPath) dans Debug.

3
user1064248

La réponse acceptée a un inconvénient majeur!
Si vous avez chargé votre image de cette manière, votre PictureBox verrouillera l’image; vous obtiendrez un message d'erreur image utilisée dans une autre application!
This article montre la solution en VB

et ceci est la mise en œuvre C #

 FileStream fs = new System.IO.FileStream(@"Images\a.bmp", FileMode.Open, FileAccess.Read);
  pictureBox1.Image = Image.FromStream(fs);
  fs.Close();
2
Samy Massoud