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
, который работает медленнее и теперь обесценивается, как упоминалось в комментариях Стивена Роббинса ниже.
person
Rhys
schedule
07.01.2009