是否可以在xaml中为整个网格提供背景图像和颜色?我没有缩放图像,因此有些区域没有颜色。是否可以用颜色为网格的其余部分着色?
这是我目前的代码:
<Grid>
<Grid.Background>
<ImageBrush Stretch="None" ImageSource="Images/background_top.png" AlignmentY="Top" AlignmentX="Center"/>
</Grid.Background>
<Grid.RowDefinitions>
<RowDefinition Height="50*" />
<RowDefinition Height="50*" />
</Grid.RowDefinitions>
</Grid>
答案 0 :(得分:9)
我能想到的唯一方法是使用Background Property设置Color,然后将一个Image添加到Grid中,确保跨越所有行和列。只要图像是网格中的第一个项目,其他项目就会叠加在顶部。我相信它会给你你想要的效果。
<Grid Background="Red">
<Image Grid.RowSpan="2" Stretch="None" Source="Images/background_top.png" VerticalAlignment="Top" HorizontalAlignment="Center"/>
<Label Content="Label" Grid.Row="0" Height="28" HorizontalAlignment="Center" Margin="10,10,0,0" Name="label1" VerticalAlignment="Top" />
<Grid.RowDefinitions>
<RowDefinition Height="50*" />
<RowDefinition Height="50*" />
</Grid.RowDefinitions>
</Grid>
答案 1 :(得分:9)
在WPF中你甚至可以这样做,如果你想用VisualBrush定义一个带有png和颜色的画笔(这个画笔 - 由于渲染画笔时性能受到影响,很多其他画笔在Windows应用商店中不可用) 这是一个基本的例子,画笔有很多你可以玩的属性:
<Window.Resources>
<VisualBrush x:Key="myBrush">
<VisualBrush.Visual>
<Grid>
<Rectangle Fill="Red"/>
<Image Source="troll.png"/>
</Grid>
</VisualBrush.Visual>
</VisualBrush>
</Window.Resources>
<Grid Background="{StaticResource myBrush}"/>
答案 2 :(得分:7)
您可以尝试在网格周围使用带有所需颜色集的边框作为背景颜色。
<Border Background="Red">
<Grid>
<Grid.Background>
<ImageBrush Stretch="None" ImageSource="Images/background_top.png" AlignmentY="Top" AlignmentX="Center"/>
</Grid.Background>
<Grid.RowDefinitions>
<RowDefinition Height="50*" />
<RowDefinition Height="50*" />
</Grid.RowDefinitions>
</Grid>
</Border>
答案 3 :(得分:1)
你的意思是这样的:
<Grid Background="Red">
<Grid.Background>
<ImageBrush Stretch="None" ImageSource="Images/background_top.png" AlignmentY="Top" AlignmentX="Center"/>
</Grid.Background>
<Grid.RowDefinitions>
<RowDefinition Height="50*" />
<RowDefinition Height="50*" />
</Grid.RowDefinitions>
</Grid>
答案 4 :(得分:1)
不完全是您问题的答案,但为了获得类似的视觉效果,您可以将网格的背景设置为图像;以及页面/窗口的背景颜色。
答案 5 :(得分:0)
将网格放在另一个网格中。外部网格具有SolidColorBrush,内部网格具有部分透明的ImageBrush。