C# 如何使背景透明而不影响WPF中的子元素

C# 如何使背景透明而不影响WPF中的子元素,c#,wpf,transparent,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时,是否可以使背景透明?您需要指定您自己的笔刷对象的alpha通道(不透明度)组件不是1 <Grid> &l

如果我有:

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


这也将使图像的不透明度为0.5。当图像不透明度保持为1时,是否可以使背景透明?您需要指定您自己的
笔刷
对象的alpha通道(不透明度)组件不是1

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


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

您可以在用于
网格
背景属性的画笔中指定不透明度,而不是将不透明度应用于整个网格元素


WPF的浅灰色是
#ffd3d3
-因此您可以使用
#80d3d3

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

a is alpha
r is red
g is green
b is blue
可能的格式()


我认为如果你打算使用这种方法,你应该从使用的十六进制颜色中去掉alpha通道(使
#295564
),以避免任何混淆。不是必需的,但很有帮助。@DanielMay你可能是对的。我不知道省略它是有效的!是的!!默认情况下,它将推断为
FF
(100%):
<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"/>
<Grid Background="#80D3D3D3" Margin="2,4,2,4">
    <Image Source="{Binding FullName}" Width="300" Height="170" />
</Grid>