locked
Как сделать, чтобы при Opacity="1.0" у ApplicationBar фоновая картинка не сжималась? RRS feed

  • Вопрос

  • Использую ApplicationBar в приложении:

    Здесь видно, что фоновая картинка искажена (сжата по высоте).
    Как сделать, чтобы при Opacity="1.0" у ApplicationBar фоновая картинка не сжималась (и при повороте экрана тоже)? Т.е. сделать поведение ApplicationBar как снимке (но с Opacity="1.0"):

    16 января 2013 г. 18:33

Ответы


  • Opacity="0.99" - не подходит. Это тоже самое, что и Opacity < 1.0. Когда Opacity="1.0", то элементы под ApplicationBar не попадают. При Opacity="0.99" - попадают.

    Как я понял у вас есть несколько картинок 480х800 для фона и вам нужно чтобы они были фоном и попадали под AppBar.  С Opacity 0.99  у вас будет как раз поведение как на третьем рисунке, но при этом фон видно не будет, потому что прозрачность практически 1. 

    Вот еще один вариант, должен вам подойти.

    <Grid.Background>
        <ImageBrush ImageSource="Image.jpg" Stretch="Uniform"/>
    </Grid.Background>

    • Помечено в качестве ответа Abolmasov Dmitry 23 января 2013 г. 13:47
    17 января 2013 г. 10:58

Все ответы

  • Opacity="0.99"

    П.С. Как возможный вариант - вставить как подложку обычный рисунок 480х800, а не задавать его в бэкграунде. 


    16 января 2013 г. 19:55
  • Если картинка статичная, то проблем вообще не должно возникать - просто заранее обрежте ее до правильных пропорций.

    Динамические можно либо в рантайме изменять, либо использовать решения Алексея.


    Для связи [mail]

    17 января 2013 г. 9:01
  • Opacity="0.99"

    П.С. Как возможный вариант - вставить как подложку обычный рисунок 480х800, а не задавать его в бэкграунде. 


    Opacity="0.99" - не подходит. Это тоже самое, что и Opacity < 1.0. Когда Opacity="1.0", то элементы под ApplicationBar не попадают. При Opacity="0.99" - попадают.

    Подложка обычный рисунок - это как? Пример можно?
    17 января 2013 г. 9:11
  • Если картинка статичная, то проблем вообще не должно возникать - просто заранее обрежте ее до правильных пропорций.

    Динамические можно либо в рантайме изменять, либо использовать решения Алексея.


    Обрезать картинку заранее - не подходит. У меня много фоновых картинок, да еще для двух тем (темной, светлой).
    И ApplicationBar может быть трёх состояний: Mode="Minimized, Mode="Default, IsVisible="False". Так что много обрезать, и сложно не запутаться.

    17 января 2013 г. 9:15

  • Opacity="0.99" - не подходит. Это тоже самое, что и Opacity < 1.0. Когда Opacity="1.0", то элементы под ApplicationBar не попадают. При Opacity="0.99" - попадают.

    Как я понял у вас есть несколько картинок 480х800 для фона и вам нужно чтобы они были фоном и попадали под AppBar.  С Opacity 0.99  у вас будет как раз поведение как на третьем рисунке, но при этом фон видно не будет, потому что прозрачность практически 1. 

    Вот еще один вариант, должен вам подойти.

    <Grid.Background>
        <ImageBrush ImageSource="Image.jpg" Stretch="Uniform"/>
    </Grid.Background>

    • Помечено в качестве ответа Abolmasov Dmitry 23 января 2013 г. 13:47
    17 января 2013 г. 10:58
  • Как я понял у вас есть несколько картинок 480х800 для фона и вам нужно чтобы они были фоном и попадали под AppBar.  С Opacity 0.99  у вас будет как раз поведение как на третьем рисунке, но при этом фон видно не будет, потому что прозрачность практически 1. 


    Я имел ввиду, что при Opacity="1.0" под ApplicationBar не попадают элементы, например, ListBox. Если Opacity="0.99", то ListBoxItem под ApplicationBar. А надо, чтобы картинка не искажалась, а вид и поведение ListBox было бы как при Opacity="1.0".

    Насчет размера
    480х800. А если приложение запуститься на телефоне с большим разрешением? Не хочется привязываться с самому простому разрешению 480х800.

    Можно только Stretch="Fill" и Stretch="UniformToFill" как раз из-за разрешений экрана. Но всё-равно отрабатывают не так как хотелось бы.
    17 января 2013 г. 11:26
  • Можно попробовать вариант с 99% прозрачности доработать, добавив в конец разметки элемент, который будет составлять нижний отступ равный высоте AppBar-а. Тогда контент должен будет нормально отображаться так, как будто прозрачность 100%.

    К сожалению, других вариантов решения проблемы пока нет.


    Для связи [mail]

    18 января 2013 г. 12:16
  • Можно попробовать вариант с 99% прозрачности доработать, добавив в конец разметки элемент, который будет составлять нижний отступ равный высоте AppBar-а. Тогда контент должен будет нормально отображаться так, как будто прозрачность 100%.

    Как вариант -  устанавливать Margin 72 снизу, отслеживать смену ориентации и изменять на 72 справа.
    18 января 2013 г. 18:53