WPF - импортировать изображение в качестве ресурса
В WinForms можно импортировать изображение как ресурс, и изображение будет работать при компиляции в папке /bin/Debug.
Я не могу понять, как заставить это работать в WPF, когда я запускаю приложение, изображение не загружается, потому что изображение сохраняется в /Projects/AppName/images/
, и приложение компилируется в /Projects/AppName/bin/Debug
, когда я запускаю его в Debug Режим.
Нужно ли просто сделать копию папки "Изображения" и поместить ее в место компиляции приложения? Или есть другой способ. Вот мой код, который отображает мое изображение:
<Image Width="300">
<Image.Source>
<BitmapImage DecodePixelWidth="300" UriSource="/images/jamsnaps-dark.png" />
</Image.Source>
</Image>
Ответы
Ответ 1
- Создайте папку (например,
images
) в проекте Visual Studio.
- Добавьте файлы изображений в эту папку.
- Установите их
Build Action
на Resource
(в окне "Свойства", см. второе изображение в этом ответе).
Затем напишите свойство UriSource
, как вы уже сделали:
UriSource="/images/jamsnaps-dark.png"
Этот URI является фактически URI файла ресурсов файла, где префикс автоматически добавляется WPF.
Ответ 2
- Добавьте изображение в каталог вашего проекта
- В обозревателе решений щелкните правой кнопкой мыши изображение и выберите
Include in Project
Действие по умолчанию должно быть установлено на Resource
.
Затем вы можете начать использовать путь изображения относительно корня, например images/text.jpg
, если вы поместите его в папку с именем images
.
Ответ 3
Два варианта:
1) Выйдите из bin/Debug и в свою папку приложений на.. /../, а затем на свое изображение.
<Image>
<Image.Source>
<BitmapImage UriSource="../../images/jamsnaps-dark.png" />
</Image.Source>
</Image>
2) Скомпилируйте свои изображения как контент из свойств в контекстном меню в файле изображения, а затем, когда они скомпилированы, они будут помещены в отладочную. Я не помню, если вам также нужно сказать им, чтобы они копировали локальные объекты также в свойствах (я не рядом с компьютером в данный момент, поэтому я не могу проверить.