Не масштабируйте ImageBrush при изменении размера, повторите это! - PullRequest
6 голосов
/ 21 декабря 2010

У меня проблема с ImageBrush:

<Window ... >
    <Grid>
        <Grid.Background>
            <ImageBrush ImageSource="Controls\Images\notebook_paper_Line.jpg" TileMode="FlipX"
                        Viewport="0,0,1,0.09" />
        </Grid.Background>        
    </Grid>
</Window>

Я хочу повторить изображение при изменении размера окна пользователя.Но в настоящее время изображение масштабируется при изменении размера окна пользователя.(Обратите внимание, что размер изображения небольшой, и я использую TileMode и Viewport, чтобы повторить его, и возникает проблема при его изменении!).

Любой код XAML будет отличным!:)

и я извиняюсь за плохой английский !!!

1 Ответ

13 голосов
/ 21 декабря 2010

По умолчанию область просмотра для TileBrush равна 0,0,1,1, а ViewportUnits - RelativeToBoundingBox, что означает, что 0,0,1,1 соответствует всему целевому размеру (в данном случае это границы сетки). ).

Так что, если вы хотите использовать мозаику ImageBrush, вам нужно настроить область просмотра. Если вы установите значение Viewport равным 0,0, .5, .5, вы должны увидеть изображения, выложенные мозаикой 2 x 2 (поскольку размер каждой плитки будет 50% x 50% размера сетки), или 0,0,0.25, 0.1 даст 4x10 и т. Д. ...

Тем не менее, это не мешает масштабированию изображения. Таким образом, в вашем случае вы, вероятно, захотите установить размер окна просмотра в размер изображения и установить для параметра ViewportUnits значение Absolute вместо RelativeToBoundingBox.

В xaml ниже у меня есть изображение 24x24 пикселей, поэтому я соответственно установил свой видовой экран. Это мозаичное изображение многократно для полного размера сетки. Если размер сетки будет изменен, появится больше плиток.

<ImageBrush ImageSource="Images\book_green.png" TileMode="FlipX" 
            Viewport="0,0,24,24" ViewportUnits="Absolute" />

Надеюсь, это поможет.

...