14

是否可以在 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>
4

6 回答 6

10

我能想到的唯一方法是使用背景属性设置颜色,然后将图像添加到网格,确保跨越所有行和列。只要图像是网格中的第一个项目,其他项目就会分层。我相信它会给你你正在寻找的效果。

<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>
于 2012-12-29T19:43:55.520 回答
10

在 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}"/>
于 2012-12-30T01:56:48.613 回答
8

您可以尝试在网格周围使用将所需颜色设置为背景颜色的边框。

<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>
于 2012-12-29T19:46:41.920 回答
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>
于 2012-12-29T19:33:57.093 回答
1

不完全是您问题的答案,但为了获得类似的视觉效果,您可以将网格的背景设置为图像;和你的页面/窗口的背景颜色。

于 2015-04-02T20:56:39.230 回答
0

将一个网格放在另一个网格中。外部网格有一个 SolidColorBrush,内部网格有一个部分透明的 ImageBrush。

于 2017-09-30T17:13:17.167 回答