.net 模糊另一个控件下的控件
如果我有控件层,例如:.net 模糊另一个控件下的控件,.net,wpf,effects,.net,Wpf,Effects,如果我有控件层,例如: Window - Grid1 (containing various UI elements) - GridBlurOverlay (does nothing except blur Grid1) - Grid2 (containing a single UI element (e.g. a "please wait" control) 如何对grid1及其内容应用蓝色效果,而不实际设置其effect属性?我曾希望,如果我创建了一个覆盖(如示例中所示),这会起作
Window
- Grid1 (containing various UI elements)
- GridBlurOverlay (does nothing except blur Grid1)
- Grid2 (containing a single UI element (e.g. a "please wait" control)
如何对grid1及其内容应用蓝色效果,而不实际设置其effect
属性?我曾希望,如果我创建了一个覆盖(如示例中所示),这会起作用,但事实上,模糊效果只会影响控件及其子控件,而不会影响其父控件。也就是说,这不像是把磨砂玻璃放在网格上,这是我想要的效果
我猜我需要做一些混乱的事情,比如将GridBlurOverlay的背景设置为基于Grid1的VisualBrush,但我想知道具体的方法是什么,是否有更优雅(性能更好)的方法?如果GridBlurOverlay是一个嘈杂且不透明的,玩它的不透明性不会给你想要的效果吗 这就是你想要的吗 编辑(更新)
为什么您不想设置效果
属性?我认为原始帖子中的“蓝色效果”应该是“模糊效果”。这正是海报所说的他不想做的——将模糊效果直接应用到包含其他控件的网格
(尽管我仍然想知道为什么这是要求)。
<Grid HorizontalAlignment="Stretch"
VerticalAlignment="Stretch">
<Grid>
<!-- you can activate this if you want this effect -->
<Grid.Background>
<SolidColorBrush Color="Gray" Opacity="0.6"/>
</Grid.Background>
<Grid.Effect>
<BlurEffect Radius="5"/>
</Grid.Effect>
<TextBlock VerticalAlignment="Top"
Text="Some Controls"
FontSize="60" />
</Grid>
<Border Background="Gray" HorizontalAlignment="Center" VerticalAlignment="Center">
<TextBlock Text="Please Wait"
FontSize="60" />
</Border>
</Grid>