Member 8092191 Ответов: 4

Как найти картинку в папке моего проекта в c#


Привет Парень,

Мне трудно отображать свои изображения в объекте изображения..

я сохранил свои изображения в папке, вот путь, по которому я сохраняю свои изображения.

C:\Users\Documents\Visual Studio 2010\Projects\ProjectItems\ProjectItems\CouponLogo

на самом деле папка была внутри моего проекта на языке Си#

у меня есть объект изображения в asp.net, но когда я нахожу путь изображения, он не работает

вот мой код:

string startupPath = AppDomain.CurrentDomain.BaseDirectory;
string targetPath = startupPath + "CouponLogo\\";
imgLogo.ImageUrl = startupPath + smile.png


заранее спасибо..

4 Ответов

Рейтинг:
4

nareshgundapaneni

привет

строка startupPath = AppDomain.CurrentDomain.BaseDirectory;
строка targetPath = startupPath + " CouponLogo\\"
Рис1.ImageUrl = targetPath + "синий hills.jpg" - - - это не сработает

потому что этот url-адрес большой...

замените этот код вы можете использовать вот так он идет за мной
Изображение 2.ImageUrl = @ " ~\CouponLogo\Blue hills.jpg"




спасибо
Нареш.Г


Рейтинг:
29

Sergey Alexandrovich Kryukov

Этот код легко проверить под отладчиком. Вы всегда должны использовать отладчик именно в таких случаях. Вы можете сравнить имя файла, которое вы рассчитали, с тем, что вы ожидаете. Если вы видите разницу и не понимаете вас, это будет хороший правильный вопрос для CodeProject.

Две рекомендации для вас:

Наиболее универсальным способом вычисления исполняемого каталога является следующий:

string exePath =
    System.IO.Path.GetDirectoryName(
        System.Reflection.Assembly.GetEntryAssembly().Location));


Пожалуйста, попробуйте. Некоторые другие методы зависят от того, где вы размещаете код: в приложении, службе, узле среды выполнения Visual Studio и т. д.

Теперь, когда вы помещаете свой образ в исполняемый каталог, это означает, что вы используете его только для чтения. Я предлагаю вам вместо этого использовать ресурсы.

Не добавляйте изображения в свой каталог. Создайте ресурс .resx. Отредактируйте его, используя «Добавить ресурс» => «Добавить существующий файл». Добавьте файл. Если файл не находился в том же каталоге, что и файл ресурсов, он будет скопирован туда, поэтому будьте осторожны, чтобы не хранить несколько копий одного и того же файла. Также этот файл будет добавлен в структуру проекта, а его ссылка будет добавлена ​​в ваш ресурс. Откройте свойство узла проекта, представляющего ваш файл изображения. Вы увидите, что это не должно быть скопировано на выходе сборки. Это будут места в ресурсе, встроенном в ваш исполняемый файл. Вы увидите этот автоматически сгенерированный файл кода Visual Studio в дочернем узле узла, представляющего файл ресурсов. Откройте этот файл и найдите статический класс и его статическое свойство с именем, напоминающим имя вашего файла изображения, который вы использовали при вводе. Используйте это свойство для доступа к ресурсу; не используйте диспетчер ресурсов и строковое имя ресурса - это не совсем поддерживаемый способ.

Используйте собственность. Если, например, ваш файл изображения имеет формат PNG, то свойство будет иметь тип System.Drawing.Bitmap Вам не нужно будет сопоставлять имя ресурса, читать данные изображения из потока ресурсов и т. д. Просто используйте экземпляр bitmap.

Еще одно преимущество: он защитит ваши изображения от модификации пользователем. Если вы также подпишете свою сборку, это сделает модификацию ваших изображений почти невозможной.

—СА


Рейтинг:
1

Simon Bang Terkildsen

System.Reflection.Assembly.GetExecutingAssembly().GetManifestResourceNames()

даст вам массив путей (string[]) ко всем вашим встроенным ресурсам.

чтобы получить поток для встроенного файл ресурсов называется улыбкой.формат PNG находится в папке с именем файла myresources:
Assembly.GetExecutingAssembly().GetManifestResourceStream("AssemblyName.MyResources.smile.png");


Member 8092191

он не работает...я не знаю, правильно ли я его использую, вот что я сделал:

имгого.Url_изображения = Ассамблеи.GetExecutingAssembly ().GetManifestResourceStream ("AssemblyName.CouponLogo. " + filename + "").Метод toString();

Sergey Alexandrovich Kryukov

Существует гораздо более удобный способ использования ресурсов для файлов изображений. Пожалуйста, посмотрите мое решение.
--СА

Рейтинг:
0

gggustafson

Не следует smile. png быть в кавычках, как в

<code>
    imgLogo.ImageUrl = startupPath + "smile.png";
</code>


с точкой с запятой после?

ГАС


Sergey Alexandrovich Kryukov

Хороший улов, но это не проблема OP, иначе он не компилировался бы, но код OP компилируется, но работает не так, как ожидалось.
Пожалуйста, посмотрите мое решение.
--СА

Curtis Smithson

Разве вы не добавили бы "smile. png" в качестве строки в startupPath?

gggustafson

Да. Но результат хранится в imgLogo.Url_изображения

Вы работаете в WinForms или WebForms?

Curtis Smithson

Да, теперь я понимаю, что ты сделал..Проделана некоторая работа над этим в последнее время

И WinForms..Всегда WinForms со мной лол