Загрузка PictureBox Изображение из файла ресурсов с помощью пути (часть 3)
Я понимаю, что этот вопрос задавался (и отвечался) раньше. Однако ни одно из решений не работает для меня.
Ниже приведен скриншот всех соответствующих частей головоломки:
Снимок экрана http://dinosaur-island.com/PlantPictureBoxScreenCap.jpg
Как вы можете видеть, существует множество растровых изображений, загруженных в виде ресурсов в папку "Изображения". Есть форма с картинкой под названием "PlantPicture". Есть строка, которая, как я знаю, имеет хороший путь (потому что я проверил ее в отладчике):
PicPath = PicPath+".bmp";
Снимок экрана http://dinosaur-island.com/PlantDebugger.jpg
Я перепробовал множество способов загрузки, кастинга и т.д. И т.д.
Ответы
Ответ 1
Путь должен быть примерно таким: "Images\a.bmp"
. (Обратите внимание на отсутствие ведущей косой черты, а черты - назад.
И затем:
pictureBox1.Image = Image.FromFile(@"Images\a.bmp");
Я просто попытался убедиться, и это работает. Это, кроме того, другой ответ, который вы получили - "всегда копировать".
Ответ 2
Хорошо... поэтому сначала вам нужно импортировать в проект изображение
1) Выберите окно изображения в Design Design
2) Откройте PictureBox Tasks (это маленькая стрелка, изображенная справа на краю на кадре)
3) Нажмите "Выбрать изображение..."
4) Выберите второй вариант "Файл ресурсов проекта:" (этот параметр создаст папку "Ресурсы", доступ к которой вы можете получить с помощью свойств. Ресурсы)
5) Нажмите "Импорт" и выберите изображение с вашего компьютера (теперь копия изображения с тем же именем, что и изображение, будет отправлена в папке "Ресурсы", созданной на шаге 4)
6) Нажмите ОК
Теперь изображение находится в вашем проекте, и вы можете использовать его с помощью команды "Свойства". Просто введите этот код, если вы хотите изменить изображение из окна изображения:
pictureBox1.Image = Properties.Resources.myimage;
Примечание. myimage представляет имя изображения... после ввода точки после ресурсов, в ваших настройках это будет ваш импортированный файл изображения
Ответ 3
Это зависит от вашего пути к файлу. Для меня текущий каталог был [project]\bin\Debug
, поэтому мне пришлось дважды перемещаться в родительскую папку.
Image image = Image.FromFile(@"..\..\Pictures\"+text+".png");
this.pictureBox1.Image = image;
Чтобы найти ваш текущий каталог, вы можете сделать фиктивный ярлык label2 и записать это:
this.label2.Text = System.IO.Directory.GetCurrentDirectory();
Ответ 4
Настройка "Скопировать в каталог вывода" на "Копировать всегда" или "Копировать, если новая" может вам помочь.
Ваш PicPath - это относительный путь, который в какое-то время преобразуется в абсолютный путь при загрузке изображения.
Скорее всего, вы увидите, что в указанном месте нет изображений, если вы используете Path.GetFullPath(PicPath)
в Debug.
Ответ 5
Принятый ответ имеет серьезный недостаток!
Если вы загрузили изображение таким образом, ваш PictureBox будет заблокировать изображение, поэтому, если вы попытаетесь выполнить какие-либо будущие операции над этим изображением, вы получите сообщение об ошибке , используемое в другом приложении!
Это статья показывает решение в VB
и это реализация С#
FileStream fs = new System.IO.FileStream(@"Images\a.bmp", FileMode.Open, FileAccess.Read);
pictureBox1.Image = Image.FromStream(fs);
fs.Close();