Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

.NET Framework 4 in WPF not showing bitmap effect

I am having a problem using VS2010 and framework version 4 with bitmap effects. If I have the code below and run it in a WPF application using the .NET Framework 4 Client Profile, the bitmap effect does not appear. If I set the framework version to .NET Framework 3.5 Client Profile (and change no code), it runs as expected. At first, I thought it was a problem in my application, but I removed the code and put it in a separate standalone application and it behaves the same. Anyone else verify that the same problem happens?

What is happening here?

The version 4 framework in VS2010 just seems to ignore the bitmap effect.

<Window.Resources>
    <Style x:Key="SectionHeaderTextBlockStyle" TargetType="{x:Type TextBlock}">
        <Setter Property="FontFamily" Value="Segoe UI"/>
        <Setter Property="FontSize" Value="18"/>
        <Setter Property="FontWeight" Value="Bold"/>
        <Setter Property="VerticalAlignment" Value="Center"/>
        <Setter Property="Foreground" Value="LightGreen"/>
        <Setter Property="BitmapEffect">
            <Setter.Value>
                <OuterGlowBitmapEffect GlowColor="Black"  GlowSize="3" />
            </Setter.Value>
        </Setter>
    </Style>
</Window.Resources>

<Grid VerticalAlignment="Center" HorizontalAlignment="Center">
    <TextBlock Text="Contact Details" Style="{DynamicResource SectionHeaderTextBlockStyle}"/>
</Grid>
like image 230
Adrian Avatar asked May 19 '10 04:05

Adrian


1 Answers

As stated by others already: .NET 4.0 no longer supports BitmapEffects.

As an additional info: Since there is no OuterGlowEffect which you can use with the Effect property (at least none that I am aware of), you can replace the bitmap effect with a DropShadowEffect and set its ShadowDepth property to 0. Then you can create a glow effect by adjusting the BlurRadius property. Furthermore, you can also adjust the Color property if you want the glow to have another color than black, but as I see from your code sample, you actually use black as the GlowColor.

I know this workaround might not be as flexible and comfortable as the OuterGlowBitmapEffect and it does not produce identical results, but at least it comes close in some situations, and it is definitely easier than writing a pixel shader yourself...

like image 87
gehho Avatar answered Nov 15 '22 10:11

gehho