it-roy-ru.com

Сетка с фоновым изображением и цветом

Можно ли в 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>
12
Jerodev

Единственный способ, о котором я могу подумать, - это использовать свойство Background, чтобы установить цвет, а затем добавить изображение в сетку, чтобы охватить все ваши строки и столбцы. Пока изображение является первым элементом в вашей сетке, остальные будут наслоены сверху. Я верю, что это даст вам эффект, который вы ищете.

<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

В WPF вы даже можете сделать это, если вы хотите определить кисть как с png, так и с цветом с помощью VisualBrush (эта кисть и многие другие кисти не доступны в приложениях Магазина 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}"/>
9
Iris Classon

Вы можете попробовать использовать рамку с желаемым цветом, установленным в качестве фона, вокруг сетки.

<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

Вы имеете в виду что-то вроде этого:

<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

Не совсем ответ на ваш вопрос, но чтобы получить подобный визуальный эффект, вы можете установить фон вашей сетки в изображение; и фон вашей страницы/окна в цвет.

1
LogicalKip

Поместите сетку в другую сетку. Внешняя сетка имеет SolidColorBrush, а внутренняя сетка имеет частично прозрачный ImageBrush.

0
CodeContractsIsStillWeak