Попытка ссылки на файлы изображений, которые находятся за пределами исполняемого выходного каталога, невероятно хрупка. Есть много способов, по которым это может пойти не так (к сожалению, в вашем вопросе недостаточно контекста, чтобы кто-нибудь мог точно знать, какой из этих способов является вашей конкретной проблемой).
Если вы хотите использовать файлы на диске для хранения ваших ресурсов изображения, их следует скопировать в каталог вывода build (т. Е. «Release») и там, где есть ссылка. Добавьте файл в проект Visual Studio, выберите его и в окне свойств установите значение «Build Action» в «Content». Если файл находится в папке в проекте, он также будет скопирован в папку с таким же именем в выходном каталоге.
Если вы используете файлы на диске, то вам нужно найти каталог исполняемого файла (например, через Path.GetDirectoryName(Assembly.GetEntryAssembly().Location)
), а затем объединить его с вашим ожидаемым относительным путем (например, просто имя файла или имя файла в любой папке/подкаталоге, который вы дали ему в проекте, если вы это сделали), используя метод Path.Combine()
, а затем используя , что абсолютное имя файла в качестве источника. В противном случае ваш код может быть смущен изменениями в текущем каталоге, созданным в другом месте вашей программы (в основном, никогда не полагайтесь на текущий каталог и hellip; глобальное состояние, подобное этому, слишком легко перепутаться, как только вы привыкнете к используй это).
Например:
string exeDirectory = Path.GetDirectoryName(Assembly.GetEntryAssembly().Location);
string imageFileName = Path.Combine(exeDirectory, "invader2.jpg");
Теперь, все, что сказал, ИМХО это, вероятно, лучше, чтобы добавить свои изображения в качестве ресурсов в самом исполняемом, а затем ссылаться на них из Properties.Resources
класса. Затем изображения всегда исполняются, потому что они находятся в одном файле. Код намного проще, потому что вы просто ссылаетесь на свойства класса Resources
, которые возвращают фактические Image
объекты, в которых вы нуждаетесь.
привет, это не работает, у меня есть то же сообщение «FileNotFoundException». Мой проект находится на E: \ DropBox \ Dropbox \ C# \ Proejcts \ MyProjects \ bin \ Pics – barnab21
Можете ли вы попробовать загрузить скриншот исключения, чтобы я мог знать, что не так. –
здесь сообщение: https://www.dropbox.com/s/hujzkko91gflov8/exceptionMessage.PNG?dl=0 – barnab21