.netwpfeffectsblur

Blur the background of the WPF container


Ultimately, what I want to achieve is a replication to some extend, of an Aero glass functionality of a WPF content control.

If I apply the BlurEffect to a StackPanel that contains a TextBlock, I will have the TextBlock's text blurred.

Consider an examples:

No blur

no blur

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

with blur

But is there a WPF way to blur the background behind the panel, and not it's contents?

The background of the StackPanel is a desktop, and the window that hosts it is set to AllowTransparency="True" to allow the custom-shaped look.


Solution

  • What the background of the StackPanel? an ImageBrush? If so why cant you apply BlurEffect to that?

    If that is not possible then try this..

    1] Use an image and draw it completely over Grid as I see you dont want a TileEffect. Add BlurEffect to this Image. Make sure you fill image the uniformly.

    2] Then add StackPanel with transparent background as next child in the Grid i.e. dont reverse the order of image and stackpanel.

    3] Then add TextBlock in StackPanel.

    OR

    If you insist on using a Brush to be set as the backgrounnd of the panel then use VisualBrush that draws a blurred image as background of the stackpanel, instead of ImageBrush.

    Let me know if any of these tips help.