Изображения, загруженные из переносимой библиотеки классов

У меня есть приложение Windows Store, в котором много-много изображений. Кроме того, эти изображения должны быть доступны в нескольких проектах на нескольких платформах.

Я создал библиотеку классов, специально предназначенную для WinRT. Это сработало хорошо, и я смог получить доступ к изображениям с помощью Uri: "ms-appx:///MyImageClassLibrary/PathToImage/ImageName.png".

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

/Images
    /scale-100
        Image1.png
    /scale-140
        Image1.png
    /scale-180
        Image1.png
    /scale-80
        Image1.png

К сожалению, когда я перенацелил библиотеку на PCL (нацеленный на профиль 259), эта функциональность перестала работать. Теперь мне нужно вручную указать то же изображение, что и "ms-appx:///MyImageClassLibrary/PathToImage/scale-100/ImageName.png".

Есть ли способ исправить это? Должен ли я ориентироваться на библиотеку именно на WinRT? Если я настрою таргетинг библиотеки на WinRT, может ли она включать Windows Phone 8.1? Сможет ли Windows Phone 8.1 обрабатывать изображения с различным масштабом?

Исходя из моей интуиции, я думаю, что мне, вероятно, придется создавать разные библиотеки изображений для каждой платформы. Если это так, есть ли способ автоматически сгенерировать или связать последующую библиотеку классов, ориентированную на другую платформу (например, Xamarin.iOS / Xamarin.Android), которая копирует все файлы в заданной папке базового проекта (например, все они в scale-100). Я знаю, что могу связывать файлы вручную, но могу ли я связать папки, чтобы любые обновления канонического проекта отражались в проектах для конкретной платформы?

Я буду больше экспериментировать с этим процессом и буду обновлять здесь любую информацию, которую найду.

Спасибо.

Обновления:

Масштабирование и прямая ссылка отлично работают как с Windows 8.1, так и с Windows Phone 8.1.


person Nate Diamond    schedule 05.05.2014    source источник


Ответы (1)


Похоже, вы поняли это, но для того, чтобы PCL поддерживал ресурсы AppX, он должен ориентироваться исключительно на платформы, поддерживающие ресурсы AppX. Сейчас это означает Windows 8.1 и Windows Phone 8.1.

person Daniel Plaisted    schedule 06.05.2014
comment
Спасибо! В настоящее время я исследую способ портативного использования SVG. Я могу попытаться превратить ее в простую универсальную библиотеку, если мне удастся заставить ее работать. - person Nate Diamond; 06.05.2014