代码之家  ›  专栏  ›  技术社区  ›  Artur Carvalho

模糊不透明度

  •  14
  • Artur Carvalho  · 技术社区  · 17 年前

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

    我试图避免依赖关系;我目前正在使用.NET 3.0,并希望它也能与XP一起运行。

    模型图像:

    Mockup Image

    3 回复  |  直到 10 年前
        1
  •  16
  •   Rhys    10 年前

    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,所以这可能是您的一个限制。(即玻璃面板不能包含在背景面板中)

    我已经用了很多次可视化画笔,通常是和translateTransforms一起使用,将它们移动一点,以在正确的位置获得正确的图像。

    更新:

    改变了的 XAML 使用 Effect 而不是 BitmapEffect 这是缓慢的,现在贬值,正如史蒂文罗宾斯在下面的评论中提到的。

        2
  •  3
  •   Steven Robbins    17 年前

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

    有一个不错的特效库 here 如果那能让你的船漂浮。

        3
  •  0
  •   Salman A    17 年前

    使用 Vista glass .