BitmapImage.UriSource как - PullRequest
       4

BitmapImage.UriSource как

0 голосов
/ 16 февраля 2012

Мне нужно добавить фоновое изображение элемента управления из кода позади. А именно, я написал следующее:

    BitmapImage tmp = new BitmapImage();
    tmp.BeginInit();
    tmp.UriSource = new Uri(@"../images/card.png", UriKind.Relative);
    tmp.DecodePixelWidth = 240;
    tmp.EndInit();
    this.bg.Source = tmp;

Проблема в том, что я не могу правильно понять источник Uri. Структура проекта следующая: папка images находится на корневом уровне (скажем, на том же уровне, что и у ресурсов), а для card.png установлено действие Resource, и она всегда копируется в выходную папку. Мой класс находится в другой папке, на том же уровне, что и изображения. Что мне не хватает? Спасибо.

Ответы [ 3 ]

2 голосов
/ 16 февраля 2012

Я часто нахожу, что полный пакет Uri - это немного больше, и что упрощенный Uri работает так же хорошо, если не лучше

Uri imageUri = new Uri("/namespace;component/images/card.png", UriKind.RelativeOrAbsolute);
2 голосов
/ 16 февраля 2012

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

 new Uri(@"../images/card.png", UriKind.Relative)

Примечание: "../" может варьироваться в зависимости от местоположения вашего класса ....

1 голос
/ 16 февраля 2012

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

Для встроенных ресурсов (в текущей сборке):

"pack://application:,,,/Subfolder/ResourceFile.xaml"

Для ресурсов в папке установки:

"pack://siteoforigin:,,,/Subfolder/SOOFile.xaml"

См. Ссылку MSDN для дополнительных параметров.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...