2011-03-04 28 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