模糊WPF容器的背景

Max*_*lov 10 .net wpf effects blur

最终,我想要实现的是在某种程度上复制WPF内容控件的Aero玻璃功能.

如果我将BlurEffecta 应用于StackPanela TextBlock,那么我TextBlock的文字会模糊不清.

考虑一个例子:

没有模糊

没有模糊

<BlurEffect Radius="5" KernelType="Gaussian"/>

与模糊

但有没有WPF方式来模糊面板背后的背景,而不是它的内容?

它的背景StackPanel是桌面,托管它的窗口设置AllowTransparency="True"为允许自定义形状的外观.

Pat*_*lug 7

不,这是不可能的.效果应用于元素及其所有子元素,但您可以轻松地将TextBlock放在容器外部,而不是放在容器内部.

通常你会使用这样的网格:

<Grid>
  <Border>
     <Border.Effect>
      <BlurEffect Radius="5" KernelType="Gaussian"/>
     </Border.Effect/>
  </Border>
  <TextBlock .../>
</Grid>
Run Code Online (Sandbox Code Playgroud)

在你的例子中,虽然没有区别.究竟,你想要模糊的是什么?


WPF*_*-it 3

StackPanel的背景是什么?图像画笔?如果是这样,为什么不能应用 BlurEffect 呢?

如果那不可能,那么试试这个..

1]使用图像并将其完全绘制,Grid因为我发现您不需要TileEffect. 添加BlurEffect到此Image。确保均匀地填充图像。

2]然后添加StackPanel透明背景作为ie中的下一个子元素Grid,不要颠倒图像和堆栈面板的顺序。

3]然后添加TextBlock到StackPanel中。

或者

如果您坚持使用 aBrush设置为面板的背景,则使用VisualBrush绘制模糊图像作为堆栈面板的背景,而不是ImageBrush

如果这些提示有帮助,请告诉我。

  • 他试图模糊 Windows 桌面背景而不是 WPF 中的某些元素。 (2认同)