【问题标题】:blurred opacity模糊的不透明度
【发布时间】:2010-09-30 03:14:05
【问题描述】:

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

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

样机图片:

【问题讨论】:

    标签: wpf .net-3.0


    【解决方案1】:

    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 在下面的 cmets 中所述。

    【讨论】:

    • 我几乎可以用 Visual Brush 做到这一点。你认为有可能做类似模型图像的事情吗?或者这就是您所说的“只要……严格控制玻璃效果边框的位置”时的意思吗?谢谢!
    • 找到了!需要 AlignmentX="Left" AlignmentY="Top" Stretch="None"。
    • 很好的例子,但出于性能原因,我不建议使用 BitmapEffect。即使它现在看起来不错,它也可能会进一步咬你。您可以将该位更改为
    【解决方案2】:

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

    有一个不错的效果库here,如果它能让你的船浮起来的话。

    【讨论】:

      【解决方案3】:

      使用Vista glass

      【讨论】:

      • 它需要 Vista。我尽量避免依赖。
      • 如果您愿意为旧机器降级,这只是一个选择。
      猜你喜欢
      • 2013-06-23
      • 2016-11-18
      • 2019-04-23
      • 2023-02-10
      • 1970-01-01
      • 1970-01-01
      • 2012-05-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多