我对Grid
应用不透明度 0.75,而Grid
的所有子项也采用不透明度。
是否可以排除子控件并且不为它们应用不透明度?
谢谢!
XAML
<Grid x:Name="RootGrid" Opacity="0.75" Visibility="Visible" ClipToBounds="False" VerticalAlignment="Stretch" HorizontalAlignment="Stretch" >
<local:MarqueeVer x:Name="marquee1" Duration="30" ClipToBounds="True"
RenderTransformOrigin="0.5,0.5" Margin="0,0,0,0"
VerticalAlignment="Stretch" HorizontalAlignment="Stretch"
Background="Transparent" Opacity="1">
<StackPanel Name="lstItems" FlowDirection="LeftToRight" Orientation="Vertical"
VirtualizingStackPanel.IsVirtualizing="True"
VirtualizingStackPanel.VirtualizationMode="Recycling">
</StackPanel>
</local:MarqueeVer>
</Grid>
_更新 _ __
我找到了一些解决方案here但是有任何更简单的解决方案吗?
您只需为每种颜色计算正确的Alpha通道。
答案 0 :(得分:7)
如果您只想更改网格背景的不透明度,则只需在背景图像中设置不透明度= 0.75。
但是我将一些画笔应用到网格中?我能做什么呢?
在这种情况下,在画笔中设置不透明度
答案 1 :(得分:2)
要实现此效果,您可以添加Rectangle
作为Grid
的子项(但作为其他元素的兄弟)并应用Background
和{{1}到Opacity
。这样,不透明度的变化不会影响Rectangle
的其他子项。
Grid
我知道这可能是一个肮脏的解决方案,但它为我做了诀窍。
答案 2 :(得分:0)
你不能让孩子比父母更不透明,但你可以使用不同不透明度的画笔,以达到一些叠加效果。
像这样:
<Window x:Class="stackoverflowviewbox.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525">
<Window.Resources>
<SolidColorBrush Color="White" Opacity=".5" x:Key="WhiteHalfOpacityBrush"/>
</Window.Resources>
<Grid Background="Green">
<Border BorderThickness="1" BorderBrush="Black" HorizontalAlignment="Center" VerticalAlignment="Center">
<Grid Background="{StaticResource WhiteHalfOpacityBrush}">
<Label>
Hello world.Hello world.Hello world.Hello world.Hello world.Hello world.
</Label>
</Grid>
</Border>
</Grid>