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

  1. Добавьте изображение в каталог вашего проекта
  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) Скомпилируйте свои изображения как контент из свойств в контекстном меню в файле изображения, а затем, когда они скомпилированы, они будут помещены в отладочную.  Я не помню, если вам также нужно сказать им, чтобы они копировали локальные объекты также в свойствах (я не рядом с компьютером в данный момент, поэтому я не могу проверить.