Можно ли запретить приложению Windows 8.1 масштабировать определенные элементы?

Я ссылаюсь на 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, это изображение уже правильно масштабировано, не масштабируйте его по коэффициенту разрешения.


person Dave Haigh    schedule 06.03.2014    source источник
comment
Если вы используете изображения с автоматическим размером, они будут масштабироваться в зависимости от их свойства Stretch, поэтому убедитесь, что у вас есть этот набор. В противном случае он не должен «физически» увеличивать изображения на экране. Обычно он просто распознает, когда они увеличиваются (например, с помощью легкого доступа), и использует изображения с более высоким разрешением.   -  person Nate Diamond    schedule 06.03.2014
comment
Если вы не против добавить дополнительное изображение, вы можете добавить myimage.noscale.jpg, а затем напрямую ссылаться на него.   -  person Nate Diamond    schedule 08.03.2014
comment
@NateDiamond, не могли бы вы рассказать, почему и как это решит мою проблему?   -  person Dave Haigh    schedule 11.03.2014
comment
Почему бы вам не получить разрешение экрана и не разместить необходимое изображение в соответствии с разрешением.   -  person Muhammad Umar    schedule 11.03.2014
comment
@MuhammadUmar Я делаю это. Но затем Windows еще больше масштабирует его - это образы, размещенные на внешнем сервере, а не в приложении.   -  person Dave Haigh    schedule 11.03.2014
comment
Установите для свойства Stretch значение none, тогда, возможно, окно не масштабирует его.   -  person Muhammad Umar    schedule 11.03.2014
comment
@MuhammadUmar добавил код по запросу. Изображение не растягивается по размеру, на самом деле оно увеличивается, как объясняет мой вопрос. Код показывает, как я указываю на правильно масштабированные внешние изображения.   -  person Dave Haigh    schedule 11.03.2014
comment
Вы отлаживали код? Что произошло при изменении разрешения? Как вы теперь уведомляете свое мнение об изменении изображения? Выполняется ли эта часть кода в соответствии с разрешением. Отладить это.   -  person Muhammad Umar    schedule 12.03.2014
comment
позвольте нам продолжить это обсуждение в чате   -  person Dave Haigh    schedule 12.03.2014
comment
Не могли бы вы просто бросить это в ViewBox и покончить с этим?   -  person Chris W.    schedule 12.03.2014
comment
@ChrisW. Вы можете объяснить, как это решить?   -  person Dave Haigh    schedule 12.03.2014
comment
Позвольте ViewBox выполнять масштабирование вместо отдельных файлов и позволять окнам пытаться масштабировать его. Он сохранит ваше разрешение изображения и, по-видимому, будет более гибким во всех отношениях.   -  person Chris W.    schedule 12.03.2014


Ответы (1)


Попробуйте присвоить свойству sizing grip значение false

person Community    schedule 18.03.2014
comment
что такое размерная ручка в xaml? Вы можете подробнее рассказать об этом? есть ссылки на msdn? как вы ожидаете, что это сработает? - person Dave Haigh; 18.03.2014