Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Uri, как BitmapImageSource и внедренный в приложение картинки. Мистика?..

9.7K
18 июля 2012 года
Vitamant
228 / / 07.02.2011
Доброго времени суток!

Пишу программку и чувствую, как начинают шевелиться волосы.
Наверное, многие, пишущие на WPF, знакомы с представлением путей внутри приложений.
"pack://application:,,,/AssemblyName;component/Path/FileName.ext"

Такой вот пакостью мне и понадобилось подцепиться к заброшенному в приложение изображению в формате png.
Всё прописал, запустил - not found. Хлопнул себя по лбу, выставил им "Внедрённый ресурс". Радостно запускаю и... та же картинка. Уже не столь уверенно сменил внедренный ресурс на просто ресурс. Нет эффекта. Чудно, вдоволь нагуглившись, решил попробовать пробросить к ресурсу поток... получилось! Попытал удачу ещё раз с Uri - работает! Радостно бросился проверять все остальные файлы и... Хрен.

В общем, с часик я ещё поразвлекался, а затем полез в недра солюшена, чтобы разобраться - какого же фига одни ресурсы находятся, а другие нет. И вот что я там обнаружил?

<ItemGroup>
<Resource Include="UI\Resources\Icon1.png" />
<Resource Include="UI\Resources\Icon2.png" />
</ItemGroup>
<ItemGroup>
<Resource Include="UI\Resources\Icon3.png" />
<Resource Include="UI\Resources\Icon4.png" />
</ItemGroup>

Иконки 1 и 2 приложение видит. Иконки 3 и 4 - нет. Группы сформировались, видимо, при добавлении - добавлял как раз по две иконки. Но... почему то о существовании второй он даже не предполагает. При этом, я естественно и переименовывал файлы, и кидал их в корень проекта, и как только не извращался. Безрезультатно. Из первой группы файлы видно, из второй нет.

Я, конечно, сейчас перетащу их все в одну, ручками, но всё же - в чем причина столь неадекватного поведения?

---

Блеск! Объединение не помогло. Удаление не помогло. Более того - перенёс всё в корень проекта, а путь поменять забыл. И... иконки 1 и 2 ПРОДОЛЖАЮТ НАХОДИТЬСЯ! О_О А 3 и 4 - нет. Что за?!..
9.7K
18 июля 2012 года
Vitamant
228 / / 07.02.2011
Плюнул, на эту пакость, сделал через потоки:
Код:
private static BitmapImage GetIcon(string resourceFile)
        {
            BitmapImage result = new BitmapImage();

            string path = String.Format("{0}.UI.Resources.{1}", Global.AssemblyName, resourceFile);
            using (var stream = Global.Assembly.GetManifestResourceStream(path))
            {
                result.BeginInit();
                result.StreamSource = stream;
                result.EndInit();
            }

            return result;
        }
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог