平铺背景 - 瓷砖之间的黑色空间

时间:2016-09-16 05:47:18

标签: c# wpf xaml background

我想尝试一下我的WPF应用程序的图像背景。我下载了一些纹理,但不幸的是我遇到了问题。 这是我的XAML:

<Window x:Class="WpfApplication1.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="458" Width="473">
    <Window.Background>

        <VisualBrush TileMode="Tile" Viewport="0,0,0.5,0.5" Stretch="None">
            <VisualBrush.Visual>
                <Image Source="Images/binding_dark.png" Stretch="None">
                    <Image.OpacityMask>
                        <ImageBrush ImageSource="Images/binding_dark.png" Stretch="None" TileMode="Tile"/>
                    </Image.OpacityMask>
                </Image>
            </VisualBrush.Visual>
        </VisualBrush>
    </Window.Background>
    <Grid>

    </Grid>
</Window>

这只是一个空窗口,但这只是为了更好地了解问题所在。 这是结果: Weird spacings

我希望得到一个漂亮的纹理作为我的应用程序的背景,但由于某种原因图像不相互对齐 - 它们之间有这种奇怪的黑色间距。这是什么原因?

// EDIT 只是为了澄清: 我希望有一个由同一图像的许多平铺副本构建的背景 - 而不是一个填满整个窗口的行李

2 个答案:

答案 0 :(得分:1)

要在无需空格的情况下获得平铺背景,您需要添加:Stretch="Uniform"

此外,您应将Viewportunits设置为绝对值和大小。在下面的代码中将32更改为您的图像大小:

ViewportUnits="Absolute" Viewport="0,0,32,32"

完整代码:

<Window.Background>

<ImageBrush ImageSource="/TestApp;component/Images/bg.png" ViewportUnits="Absolute" Viewport="0,0,32,32" Stretch="Uniform" TileMode="Tile" />   

</Window.Background>

答案 1 :(得分:0)

尝试设置网格的背景,而不是窗口,如下所示:

<Grid>
    <Grid.Backgroud>
        <ImageBrush Source="Images/binding_dark.png" x:Name="image" Stretch="UniformToFill"/>
    </Grid.Background>
</Grid>

你可以设置整个窗口的背景,但我不确定这是一个好习惯