2012-12-29 9 views
9

Czy możliwe jest nadanie całej siatki w Xaml zarówno obrazowi tła, jak i kolorowi? Nie skaluję obrazu, więc istnieją regiony, które nie mają koloru. Czy można pokolorować resztę siatki kolorem?Siatka z obrazem tła i kolorem

To jest mój bieżący kod:

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

Odpowiedz

0

Masz na myśli coś takiego:

<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> 
+11

To nie zadziała, jeśli dwukrotnie zmieniasz właściwość Background. –

8

Jedynym sposobem, że mogę myśleć jest użycie atrybutu background, aby ustawić kolor, następnie dodaj obraz do siatki, upewniając się, że obejmuje on wszystkie Twoje rzędy i kolumny. Dopóki Obraz jest pierwszym elementem w twojej siatce, pozostałe będą ułożone warstwami na wierzchu. Wierzę, że da to efekt, którego szukasz.

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

można spróbować za pomocą granicy z żądanym kolorem ustawionym jako kolor tła, wokół siatki.

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

W WPF można nawet to zrobić, jeśli chcesz zdefiniować pędzel zarówno z PNG i kolor z VisualBrush (tym pędzlem - i sporo innych szczotek nie są dostępne w systemie Windows Store Apps z powodu trafienia wydajności podczas renderowania szczotki) Oto prosty przykład, szczotka ma sporo właściwości można bawić się z:

<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}"/> 
0

nie dokładnie odpowiedzi na swoje pytanie, ale aby uzyskać podobny efekt wizualny, można ustaw tło siatki na obraz; i tło twojej strony/okna do koloru.

0

Umieść siatkę w innej siatce. Zewnętrzna siatka ma SolidColorBrush, a wewnętrzna siatka ma częściowo przezroczysty ImageBrush.