Rhy*_*hys 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>
Run Code Online (Sandbox Code Playgroud)
我不认为可视化树中的子元素能够获取它的父级的VisualBrush,因此这可能是对您的限制.(即背景面板不能包含玻璃面板)
我经常使用VisualBrushes多次使用TranslateTransforms将它们移动一点,以便在正确的位置获得正确的图像.
改变XAML使用Effect而不是BitmapEffect更慢,现在折旧如Steven Robbins在下面的评论中提到的那样.