web-dev-qa-db-fra.com

Grille avec image de fond et couleur

Est-il possible de donner à une grille entière en xaml une image de fond et une couleur? Je ne redimensionne pas l'image, il y a donc des régions sans couleur. Est-il possible de colorer le reste de la grille en couleur?

Ceci est mon code actuel:

<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>
12
Jerodev

Le seul moyen auquel je puisse penser est d'utiliser la propriété Background pour définir la couleur, puis d'ajouter une image à la grille en veillant à recouvrir toutes vos lignes et colonnes. Tant que l'image est le premier élément de votre grille, les autres seront superposés. Je crois que cela vous donnera l'effet que vous recherchez.

<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>
9
Mark Hall

Dans WPF, vous pouvez même le faire si vous souhaitez définir un pinceau à la fois avec un png et une couleur avec VisualBrush (ce pinceau - et de nombreux autres pinceaux ne sont pas disponibles dans le Windows Store Apps en raison de la dégradation des performances lors du rendu des pinceaux). .Voici un exemple de base, le pinceau a quelques propriétés avec lesquelles vous pouvez jouer:

    <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}"/>
9
Iris Classon

Vous pouvez essayer d'utiliser une bordure avec la couleur souhaitée définie comme couleur d'arrière-plan, autour de la grille.

<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>
7
VasileF

Tu veux dire quelque chose comme ca:

<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>
1
WooCaSh

Pas exactement la réponse à votre question, mais pour obtenir un effet visuel similaire, vous pouvez définir l'arrière-plan de votre grille sur une image. et l'arrière-plan de votre page/fenêtre à une couleur.

1
LogicalKip

Placez une grille dans une autre grille. La grille externe a un SolidColorBrush et la grille interne a un ImageBrush partiellement transparent.

0