模糊另一个控件下方的控件

时间:2011-11-16 17:57:21

标签: .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)

如何在不实际设置Effect属性的情况下对grid1及其内容应用蓝色效果?我曾希望,如果我创建一个叠加(如示例中),这将起作用,但实际上模糊效果只影响控件及其子项,而不是它的父项。即它不像在Grid1上放置磨砂玻璃,这就是我追求的效果。

我猜我需要做一些混乱的事情,例如将GridBlurOverlay的背景设置为基于Grid1的VisualBrush,但我想知道这个方法究竟是什么,以及是否有更优雅的东西(以及更好的性能) ?

2 个答案:

答案 0 :(得分:0)

如果GridBlurOverlay是一个嘈杂的&不透明,不会玩它的不透明度给你想要的效果?

答案 1 :(得分:0)

这就是你想要的吗?

编辑(更新)

<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>