我需要创建一个透明的模糊背景。假设我有一个带有白色模糊透明背景的边框,边框后面的所有内容都是模糊的。
我正在尝试避免依赖项;我目前使用的是 .NET 3.0,并且希望它也能在 Windows XP 上运行。
模型图像:
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在下面的评论中提到。