Изменение размера изображения с URL для фона панорамы - PullRequest
1 голос
/ 10 февраля 2011

Я работаю над своим первым приложением WP7 и сейчас изучаю мир управления панорамой. Я загрузил объект из службы REST и задал фон панорамы для URL-адреса изображения в этом объекте.

var brush = new ImageBrush() { ImageSource = new BitmapImage(new Uri(_group.photo_url, UriKind.Absolute)) };
groupPanorama.Background = brush;

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

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

большое спасибо!

РЕДАКТИРОВАТЬ:

Включая отрывок из xaml. Довольно общий:

<!--LayoutRoot contains the root grid where all other page content is placed-->
<Grid x:Name="LayoutRoot">
    <controls:Panorama Name="groupPanorama" Title="" SelectionChanged="groupPanorama_SelectionChanged">

        <!--Panorama item one-->
        <controls:PanoramaItem Header="Main">
            <Grid/>
        </controls:PanoramaItem>

Полагаю, я должен отметить, что я уже пробовал различные свойства Stretch для ImageBrush, но безуспешно.

UPDATE:
Это похоже на работу с изображениями нормального размера. Изображение, с которым я изначально пытался это сделать, довольно маленькое и не растягивается. Возможно, это ошибка, но я пока обойдусь с этим.

Ответы [ 2 ]

1 голос
/ 10 февраля 2011

Как показывает предыдущий ответ, вы можете использовать свойство Stretch в ImageBrush, чтобы получить платформу для изменения размера за вас.Для уточнения:

  • Stretch.Fill: эта опция изменит размер изображения по горизонтали и вертикали в соответствии с требуемым пространством, что может привести к сжатию или растяжению изображения в одном или обоих направлениях.
  • Stretch.Uniform: этот параметр изменяет размер изображения по горизонтали или вертикали в зависимости от исходного изображения, сохраняя при этом соотношение сторон изображения.При использовании этой опции все еще возможно иметь пустое пространство.
  • Stretch.UniformToFill: Как и в предыдущем варианте, этот параметр поддерживает соотношение сторон изображения, но гарантирует, что все доступное пространство заполнено.Это предотвратит любое пустое место, но часть изображения может быть обрезана.

Вы должны сделать свой выбор на основе ваших требований (лично я думаю, что UniformToFill лучше всего подходит в этой ситуации)и типичные размеры ваших исходных изображений.

1 голос
/ 10 февраля 2011

вы пробовали:

var brush = new ImageBrush() { 
               ImageSource = new BitmapImage(new Uri(_group.photo_url, UriKind.Absolute)), 
               Stretch = Stretch.UniformToFill
            };
groupPanorama.Background = brush;

Stretch можно выбрать из None, Fill, Uniform и UniformToFill.

...