模糊的不透明度

时间:2009-01-07 20:37:12

标签: wpf .net-3.0

我需要创建一个透明的模糊背景。让我们假设我有一个白色模糊透明背景的边框。边界后面的一切都很模糊。

我正在努力避免依赖;我目前正在使用.NET 3.0,并希望它也可以在XP上运行。

样机图片:

Mockup Image

3 个答案:

答案 0 :(得分:16)

VisualBrush可以用来接近你想要的东西,但有一些限制。

只要您只需要窗口内的玻璃效果(而不是对其他窗户的影响)并且玻璃效果边框的位置被严格控制,那么您可以这样: -

  <Grid>
    <Border x:Name="src" Background="Silver">
      <Label HorizontalAlignment="Center" VerticalAlignment="Center" FontSize="50">Hello World</Label>
    </Border>
    <Border Background="White" Margin="40" >
      <Border Opacity="0.5" >
          <Border.Effect>
            <BlurEffect Radius="10"/>
          </Border.Effect>
        <Border.Background>
          <VisualBrush  Visual="{Binding ElementName=src}" Stretch="None" />
        </Border.Background>
      </Border>
    </Border>
  </Grid>

我不认为可视化树中的子元素能够获取它的父元素的VisualBrush,因此这可能是对您的限制。 (即背景板不能包含玻璃面板)

我经常使用VisualBrushes多次使用TranslateTransforms将它们移动一点,以便在正确的位置获得正确的图像。

更新

改变XAML使用Effect而不是BitmapEffect,这是较慢的,现在已经折旧,如下面Steven Robbins的评论所述。

答案 1 :(得分:3)

我想你需要使用效果,应用于背景矩形或网格。

如果漂浮在你的船上,有一个不错的效果库here

答案 2 :(得分:0)

使用Vista glass