我想尝试一下我的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>
这只是一个空窗口,但这只是为了更好地了解问题所在。 这是结果:
我希望得到一个漂亮的纹理作为我的应用程序的背景,但由于某种原因图像不相互对齐 - 它们之间有这种奇怪的黑色间距。这是什么原因?
// EDIT 只是为了澄清: 我希望有一个由同一图像的许多平铺副本构建的背景 - 而不是一个填满整个窗口的行李
答案 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>
你可以设置整个窗口的背景,但我不确定这是一个好习惯