Не масштабируйте изображение. Во время изменения размера, повторите его!

StackOverflow https://stackoverflow.com/questions/4502346

Вопрос

У меня проблема с 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 будет отличным! :)

И мне жаль плохой английский !!!

Это было полезно?

Решение

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

Так что, если вы хотите устроить изображение, вы захотите настроить просмотр. Если бы вы установили ViewPort на 0,0, .5, .5, вы должны увидеть изображения, которые были склонны 2 x 2 (поскольку каждая плитка будет на 50% x50% больше размера сетки) или 0,0,0,25, 0,1 будет производить плитку 4x10 и т. Д.

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top