6

我有一个问题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>

我想在用户调整窗口大小时重复图像。但是当前图像在用户调整窗口大小时会缩放。(请注意,图像尺寸很小,我使用TileModeViewport重复它,并且在调整大小时会出现问题!)。

任何 XAML 代码都会很棒!:)

我很抱歉英语不好!!!

4

1 回答 1

14

默认情况下,TileBrush 的 Viewport 为 0,0,1,1,ViewportUnits 为 RelativeToBoundingBox,这意味着 0,0,1,1 映射到整个目标大小(在本例中为 Grid 的边界)。

因此,如果要平铺 ImageBrush,则需要调整视口。如果您将 Viewport 设置为 0,0,.5,.5,您应该会看到 2 x 2 平铺的图像(因为每个平铺将是 Grid 大小的 50%x50%)或 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" />

我希望这会有所帮助。

于 2010-12-21T20:33:08.677 回答