blurred opacity
Asked Answered
M

3

16

I need to create a transparent blurred background. Lets suppose I have a border with a white blurry transparent background. Everything that is behind the border is blurred.

I'm trying to avoid dependencies; I'm currently using .NET 3.0, and want it to run with XP too.

Mockup image:

Mockup Image

Maggee answered 7/1, 2009 at 20:37 Comment(0)
S
19

A VisualBrush can be used to get close to what you want, but has some limitations.

As long as you only need the glass effect within the window (and not be an effect over other windows) and that the placement of the glass effect border is controlled tightly then you could you something like this:-

  <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>

I don't think that a child element within the visual tree is able to get the VisualBrush of it's parent so this might be a limitation for you. (i.e. the glass panel cannot be contained by the background panel)

I've used VisualBrushes many times usually with TranslateTransforms to move them around a bit to get the right image in the right place.

Update:

Altered XAML to use Effect and not BitmapEffect that is slower and now depreciated as mentioned in the comments below by Steven Robbins.

Salgado answered 7/1, 2009 at 23:8 Comment(3)
I can almost do it with Visual Brush. Do you think its possible to do something like the mockup image? Or is this what you were referring when you said "as long ... the placement of the glass effect border is controlled tightly"? Thanks!Maggee
Found it! Needed AlignmentX="Left" AlignmentY="Top" Stretch="None".Maggee
Nice example, but I wouldn't recommend using BitmapEffect for performance reasons. Even if it looks fine now, it might bite you further down the line. You can change that bit to <Border.Effect><BlurEffect Radius="10" /></Border.Effect>Hereafter
H
3

I would imagine you will need use an Effect for this, applied to a background rectangle or grid.

There's a decent library of effects here if that floats your boat.

Hereafter answered 7/1, 2009 at 20:40 Comment(0)
P
0

Use Vista glass.

Parliamentarian answered 7/1, 2009 at 20:42 Comment(2)
It needs Vista. Im trying top avoid dependencies.Maggee
It's only an option if you're willing to degrade for older machines.Parliamentarian

© 2022 - 2024 — McMap. All rights reserved.