2013-03-29 6 views
1

Я работаю над проектом C# Мне нужно получить изображения из каталога изображений, используя относительный путь. Я попыталсяКак установить относительный путь к каталогу изображений внутри проекта C#?

var path = Path.GetDirectoryName(Assembly.GetEntryAssembly().Location) + @"\Images\logo.png"; 
var logoImage = new LinkedResource(Path.GetDirectoryName(Assembly.GetEntryAssembly().Location)[email protected]"\Images\logo.png") 

Но не повезло с этим ... я не делал изображения, которые необходимо скопировать в каталог вывода, когда программа работает, но это не пикап эти изображения.

+0

В чем проблема? – SLaks

+0

Как использовать относительный путь для получения каталога изображений? – nzdev

ответ

8

Если вы используете LinkedResource() в C#, скорее всего, не получите свой относительный URI или местоположение файла.

Вы можете использовать некоторый дополнительный кусок кода

var outPutDirectory = Path.GetDirectoryName(Assembly.GetExecutingAssembly().CodeBase); 
var logoimage = Path.Combine(outPutDirectory, "Images\\logo.png"); 
string relLogo = new Uri(logoimage).LocalPath; 
var logoImage = new LinkedResource(relLogo) 

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

+0

Удивительно, что это решило проблему – nzdev

0

Во-первых, добавьте эти файл изображения для вашего проекта (создать папку Image хорошая идея)

Во-вторых, выберите изображение в вашем менеджере решений, а также просматривать окно свойств.

А затем измените «копировать в папку вывода» на «всегда» или «скопировать при обновлении».

PS. Моя IDE - Trad. Китайский, поэтому я не могу обеспечить правильные ключевые слова на вашем языке.

+0

Я уже сделал это не так – nzdev

+0

Извините, я могу неправильно понять ваш вопрос. Однако проверяете ли вы значение 'path' или' logoImage'? Я предполагаю, что это может быть меньше «\» или для многих из них. –

1

Я бы удостоверился, что каталог «Изображения» находится в выходной папке. Обычно я использую Assembly.GetExecutingAssembly().Location, чтобы получить местоположение моей dll.

Однако для изображений я обычно использую страницу/коллекцию ресурсов на странице свойств проекта. Here - это больше информации. Помещение изображения в ресурс проекта автоматически предоставит вам простой способ доступа к нему.

Для получения дополнительной информации о GetExecutingAssembly: MSDN Page

+0

благодаря его лучшему подходу мне понравилось – nzdev

-2

если и хочет, чтобы отображать изображения в папке, используя приложение использовать массив и поместить все фотографии в Уре папки в массив. то вы можете идти вперед и назад.

string[] _PicList = null; 

int current = 0; 

_PicList = System.IO.Directory.GetFiles("C:\\Documents and Settings\\Hasanka\\ 
               Desktop\\deaktop21052012\\UPEKA","*.jpg"); 
// "*.jpg" will select all 

//pictures in your folder 


String str= _PicList[current]; 

DisplayPicture(str); 

private void DisplayPicture(string str) 

{ 
    //throw new NotImplementedException(); 
    BitmapImage bi = new BitmapImage(new Uri(str)); 
    imagePicutre.Source = bi; // im using Image in WPF 
    //if u r using windows form application it must be a PictureBox i think. 

    label1.Content = str; 

} 
+2

Я знаю, как использовать абсолютный путь, но мой контекст - использовать относительный путь – nzdev

Смежные вопросы