如何在不影响WPF中的子元素的情况下使背景透明

时间:2014-07-30 14:23:28

标签: c# wpf transparent

说我是否有:

<Grid Background="LightGray" Margin="2,4,2,4" Opacity="0.5">
<Image Source="{Binding FullName}" Width="300" Height="170" />
</Grid>

这也会使图像的不透明度为0.5。当图像保持不透明度为1

时,是否可以使背景透明

3 个答案:

答案 0 :(得分:6)

您需要使用不是1的Alpha通道(不透明度)组件指定自己的Brush对象。

<Grid>
    <Grid.Background>
       <SolidColorBrush Color="#FF295564" Opacity="0.3"/>
    </Grid.Background>
</Grid>

值得注意的是,颜色十六进制值的第一个字节是alpha透明度,但Opacity属性允许您使用double,而不是无符号字节。它更容易阅读。

答案 1 :(得分:1)

您可以在用于Grid Background属性的画笔中指定不透明度,而不是将不透明度应用于整个Grid元素。

WPF的LightGray#FFD3D3D3 - 因此您可以使用#80D3D3D3

答案 2 :(得分:1)

背景也可以采用十六进制格式的颜色:

a is alpha
r is red
g is green
b is blue

可能的格式(from here

<object property="predefinedBrushName"/>
- or -
<object property="#rgb"/>
- or -
<object property="#argb"/>
- or -
<object property="#rrggbb"/>
- or -
<object property="#aarrggbb"/>
- or -
<object property="sc#scA,scR,scG,scB"/>
- or -
<object property="ContextColor profileUri alphaValue,colorValue"/>

因此我们可以使用Background="#80D3D3D3"((LightGray定义为#FFD3D3D3,因此我将不透明度更改为50%)

<Grid Background="#80D3D3D3" Margin="2,4,2,4">
    <Image Source="{Binding FullName}" Width="300" Height="170" />
</Grid>