Я ссылаюсь на URL-адреса внешних изображений для свойства источника элемента изображения в моем приложении.
У меня есть 3 версии изображения в масштабе 100, 140 и 180, например.
myimage.scale-100.jpg
myimage.scale-140.jpg
myimage.scale-180.jpg
Если изображения находятся в приложении, вы обычно помещаете источник, как показано ниже, и Windows определяет, какое изображение загружать, в зависимости от масштаба разрешения устройства:
ms-appx:///Assets/Images/myimage.jpg
Однако, поскольку мои 3 изображения живут внешне, мне нужно определить масштаб разрешения, а затем создать правильную исходную строку, чтобы загружалось правильное изображение, например:
http://www.mywebsite.com/myimage.scale-180.jpg
Это работает, однако окна принимают мое изображение, например. масштаб 180 на один myimage.scale-180.jpg, а затем масштабирование еще на 180%, он не знает, что я уже загрузил изображение с правильным масштабом 180% и что его не нужно масштабировать это вверх!
Есть ли способ запретить увеличивать отдельные элементы изображения?
Обновление (добавлен код):
Элемент изображения xaml:
<Image Source="{Binding Image, Converter={StaticResource ImageToExternalImagePathConverter}}" HorizontalAlignment="Left" VerticalAlignment="Top" Stretch="None" />
Конвертер, используемый в элементе изображения для определения пути внешнего изображения (он определяет масштаб и использует привязку для построения правильной строки).
public object Convert(object value, Type targetType, object parameter, string language)
{
ResolutionScale resolutionScale = Windows.Graphics.Display.DisplayInformation.GetForCurrentView().ResolutionScale;
string ImageScale = ".scale-100";
switch (resolutionScale)
{
case ResolutionScale.Scale140Percent:
ImageScale = ".scale-140";
break;
case ResolutionScale.Scale180Percent:
ImageScale = ".scale-180";
break;
}
//builds up the correct string e.g. http://www.mywebsite.com/myimage.scale-180.jpg
string externalPath = "http://www.mywebsite.com/" + (string)value + ImageScale + ".jpg";
return externalPath;
}
Обновление (добавлена ссылка):
Чтобы подробнее объяснить, чем я сейчас занимаюсь, перейдите по этой ссылке: http://msdn.microsoft.com/en-us/library/windows/apps/hh465362.aspx
Загрузка изображений вручную на основе процента масштабирования во время выполнения. Если ваше приложение загружает изображения во время выполнения с помощью кода, например, если вы используете DirectX напрямую, а не XAML или HTML для создания пользовательского интерфейса, используйте свойство DisplayProperties.ResolutionScale , чтобы определить масштаб и вручную загрузить изображения на основе процента масштаба.
Вот что я делаю, но проблема в том, что Windows увеличивает размер пользовательского интерфейса до 140% или 180%, включая мое загруженное вручную изображение. Поэтому, если я вручную загружаю изображение, размер которого уже составляет 140%, он все равно масштабируется Windows, и он ДЕЙСТВИТЕЛЬНО становится больше физически. Если бы изображения находились в пакете приложения, этой проблемы не существовало бы, потому что Windows распознает идентификаторы файлов и не масштабирует их (см. Ниже)
Используйте загрузку ресурсов для растровых изображений в пакете приложения. Для растровых изображений, хранящихся в пакете приложения, предоставьте отдельное изображение для каждого коэффициента масштабирования (100%, 140% и 180%) и назовите свое изображение файлы, используя соглашение об именах "масштаб", описанное ниже. Windows автоматически загружает нужное изображение для текущего масштаба.
Как я могу воспроизвести такое же поведение из Windows для изображений, которые находятся в пакете приложения, но для изображений, которые являются внешними по отношению к приложению и загружаются вручную? Логически в момент загрузки изображения в ( code), я хочу сказать Windows, это изображение уже правильно масштабировано, не масштабируйте его по коэффициенту разрешения.
Stretch
, поэтому убедитесь, что у вас есть этот набор. В противном случае он не должен «физически» увеличивать изображения на экране. Обычно он просто распознает, когда они увеличиваются (например, с помощью легкого доступа), и использует изображения с более высоким разрешением. - person Nate Diamond   schedule 06.03.2014myimage.noscale.jpg
, а затем напрямую ссылаться на него. - person Nate Diamond   schedule 08.03.2014Stretch
значение none, тогда, возможно, окно не масштабирует его. - person Muhammad Umar   schedule 11.03.2014ViewBox
и покончить с этим? - person Chris W.   schedule 12.03.2014