Charge picturebox image en C# à partir d'un fichier dans le chemin d'accès relatif
J'ai un picturebox image dans un Formulaire Windows Solution. Après que l'utilisateur sélectionne un élément dans une base de données, je veux charger une image dans ce picturebox. Le nom de fichier de l'image viendra de la base de données et toutes les images doivent être stockées dans un sous-dossier du dossier de l'application (\Images).
Je ne veux pas d'inclure tous ces (2000-3000 images) dans ma solution, en outre, de plus les images seront ajoutées par les utilisateurs de la base de données augmente.
Aussi, je ne veux pas de code d'un chemin d'accès absolu. Donc ce n'est pas ce que je veux:
pictureBox.Image = Image.FromFile(@"C:\Program Files\Application\Images\" + dbase.filename);
Je veux le code d'un chemin relatif au dossier de l'image, de sorte que peu importe où l'application sera installée, les images peuvent être chargées à partir de ce sous-dossier.
J'ai essayé des choses comme celles-ci, à l'aide d'un test temporaire-image appelée "test.jpg":
pictureBox.Image = Image.FromFile(@"Images\test.jpg");
pictureBox.Image = Image.FromFile(@"..\Images\test.jpg");
pictureBox.Image = Image.FromFile(@"|DataDirectory|\Images\test.jpg");
Mais cela ne fonctionne pas. Je ne peux que le faire fonctionner avec un chemin absolu, comme "C:\Images\test.jpg". Que dois-je faire?
MsgBox(Environment.CurrentDirectory)
pour voir ce qu'il est réellement.Merci de souligner ce point, Ross. Ressemble à la CurrentDirectory est ..\bin\Debug. Quand je place mon dossier Images dans et exécuter mon code avec un contrôle pictureBox.Load ("./Images/test.jpg"), il fonctionne. Cependant, lorsque je publie mon projet et de l'installer, il ne trouve pas le dossier Images partout où je le place à l'intérieur du dossier de l'application. Le CurrentDirectory points abstraite sous-dossier de C:\Users\AppData\Local\Apps\etc.
OriginalL'auteur Ivo77 | 2014-07-15
Vous devez vous connecter pour publier un commentaire.
Avez-vous essayé le PictureBox.La Méthode De Chargement?
Dans votre projet, quand vous regardez les propriétés de votre Image, quelle est son Action de Construire? Aussi, sur cette base, enhardi partie de la citation dans ma réponse, il indique que le chemin est relatif au répertoire de travail. Par conséquent, la prochaine question logique est ce que vous avez le répertoire de travail?
Ce n'est pas vraiment dans mon projet. Mon application finale sera à l'aide d'une collection de 2000 à 3000 images dans le dossier \Images. Le nombre d'images va croître lorsque de nouveaux éléments sont ajoutés à une base de données par l'utilisateur (avec l'option de sélection d'une image, qui sera redimensionnée et enregistré dans le dossier Images). Donc, je ne peux pas faire les images de la partie du projet, il suffit de le sous-dossier qui leur est réservé.
Vous pouvez. En gros, vous avez besoin de faire ce que @raney réponse dit, mais au lieu de l'affecter à une variable, vous devez vous rendre dans le répertoire courant. Donc, il serait
Environment.CurrentDirectory = Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), "Images");
ouEnvironment.CurrentDirectory = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
selon la façon dont vous voulez aller.Ah, trouvé! Bon, Maverick. Encore une fois, vous êtes l'homme!
OriginalL'auteur Code Maverick
Je voudrais utiliser la réflexion pour obtenir l'exécution de répertoire, tels que:
OriginalL'auteur raney
La meilleure façon de charger une image à un picturbox est, de charger des images à partir de votre projet de dossier de ressources.
Pour cela, procédez de la manière suivante:
charger l'image à picturebox de dossier de ressources.
Form1.pictureBox1.Image = votreprojet.Les propriétés.Les ressources.YourImage;
Remarque: le type d'image n'est pas nécessaire.bmp, .jpg etc]
OriginalL'auteur binu narayanan