2011-03-04 46 views
3

我有這樣的事情:如何創建具有半透明背景但實體兒童的網格?

<Grid Background="Black" Opacitiy="0.5"> 
    <Grid.RowDefinitions>...</Grid.RowDefinitions> 
    <Image Source="..." Opacity="1.0" Grid.Row="0"/> 
    <TextBlock Text="..." Opacitiy="1.0" Grid.Row="1"/> 
</Grid> 

不幸的是,圖像和文本有50%的不透明度得到渲染爲好。我想要的是具有100%純色圖像和文字兒童的半透明黑色背景。

這樣做的最好方法是什麼?

回答

9

添加Rectangle爲網格的第一個孩子,確保它跨越所有網格的行和列,與不透明度你想:

<Grid> 
    <Grid.RowDefinitions>...</Grid.RowDefinitions> 

    <Rectangle Fill="Black" Opacity="0.5" Grid.RowSpan="2" /> 

    <Image Source="..." Grid.Row="0"/> 
    <TextBlock Text="..." Grid.Row="1"/> 
</Grid> 

(我已經刪除了Opacity屬性從ImageTextBlock因爲它不是在這裏需要)

+0

Ah ... rowspan , 好的。我確實嘗試過,但沒有排隊。是的,我意識到這不會被需要,但我把不透明度放在那些上來展示我所嘗試過的。謝謝。 – 2011-03-04 23:19:12

2

或者無需額外的UI元素:

<Grid Background="#80000000" Opacitiy="0.5"> 
    <Grid.RowDefinitions>...</Grid.RowDefinitions> 
    <Image Source="..." Opacity="1.0" Grid.Row="0"/> 
    <TextBlock Text="..." Opacitiy="1.0" Grid.Row="1"/> 
</Grid> 

記住「#80000000」的意思是Alpha(opacity)=「80」,Red =「00」,Green =「00」,Blue =「00」,並且這些數字是十六進制值

+0

感謝您的好解決方案!其實你不需要設置Opacitiy =「0.5」。 – Danil 2014-03-18 05:18:44