Как я могу повернуть изображение и сделать его доступным в Windows Phone 7? - PullRequest
1 голос
/ 23 января 2012

ОК, поэтому у меня есть это изображение 1000x500. Поэтому я показываю это в WP7 так:

<Grid x:Name="ContentPanel" Grid.Row="1" Margin="0,0,0,0" Background="{StaticResource PhoneAccentBrush}">
    <Image Name="image1" />
</Grid>

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

enter image description here

Неплохо, но мое бизнес-требование - отображать его вертикально, поэтому мне нужно повернуть его. Достаточно просто:

<Grid x:Name="ContentPanel" Grid.Row="1" Margin="0,0,0,0" Background="{StaticResource PhoneAccentBrush}">
    <Image Name="image1" RenderTransformOrigin="0.5 0.5">
        <Image.RenderTransform>
            <RotateTransform Angle="90"></RotateTransform>
        </Image.RenderTransform>
    </Image>
</Grid>

И результат:

enter image description here

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

Вместо этого, похоже, что происходит то, что изображение принимает размеры того, что было бы, когда оно заполняет экран горизонтально, тогда , что - это то, что поворачивается.

ОК, значит, у них есть параметр «Растянуть». Давайте посмотрим, что это делает.

Что ж, установка в "Uniform" ничего не делает

Установка «Fill» делает это:

<Grid x:Name="ContentPanel" Grid.Row="1" Margin="0,0,0,0" Background="{StaticResource PhoneAccentBrush}">
    <Image Name="image1" RenderTransformOrigin="0.5 0.5" Stretch="Fill">
        <Image.RenderTransform>
            <RotateTransform Angle="90"></RotateTransform>
        </Image.RenderTransform>
    </Image>
</Grid>

enter image description here

Похоже, он просто растягивает повернутое изображение по горизонтали, а это не то, чего я хочу.

И "UniformToFill" делает это:

enter image description here

Я даже не знаю, что там произошло.

Я должен сказать, что после того, как я запрограммировал это приложение для iOS и Android, а теперь выполнил версию WP7, поскольку моя специальность в течение десятилетия была в C #, Microsoft действительно много всего сделала с WP7. С ним легко работать, и понятно, что они вложили в него массу усилий и успешно использовали в нем свои существующие технологии (.NET CE, Silverlight и т. Д.)

Так что непонятно, почему после прохождения всего остального в этом приложении я не могу заставить простое изображение вращаться и масштабироваться.

Кто-нибудь знает, что я здесь скучаю или делаю неправильно? Все, что мне нужно, это повернуть на 90 градусов, а затем заполнить экран, так что более сложные решения по вращению, которые я видел для WP7, на самом деле не применимы.

1 Ответ

4 голосов
/ 23 января 2012

Проблема с RenderTransform заключается в том, что он НЕ распространяет изменение размера / ориентации на родительские элементы управления.В WPF есть LayoutTransform, который выполняет это.

К счастью, вы не одиноки, а набор инструментов Silverlight предоставляет решение , называемое: LayoutTransformer

Для Windows Phone вы можете найти порт Дэвида Ансона здесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...