【发布时间】:2010-09-30 03:14:05
【问题描述】:
我需要创建一个透明的模糊背景。假设我有一个带有白色模糊透明背景的边框。边界后面的一切都被模糊了。
我试图避免依赖;我目前正在使用 .NET 3.0,并且希望它也可以在 XP 上运行。
样机图片:
【问题讨论】:
我需要创建一个透明的模糊背景。假设我有一个带有白色模糊透明背景的边框。边界后面的一切都被模糊了。
我试图避免依赖;我目前正在使用 .NET 3.0,并且希望它也可以在 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 在下面的 cmets 中所述。
【讨论】:
我想你需要为此使用一个效果,应用于背景矩形或网格。
有一个不错的效果库here,如果它能让你的船浮起来的话。
【讨论】:
使用Vista glass。
【讨论】: