WPF中的.NET Framework 4未显示位图效果

时间:2010-05-19 04:33:48

标签: wpf visual-studio-2010 .net-4.0

我在使用VS2010和带有位图效果的框架版本4时遇到问题。如果我有下面的代码并使用.NET Framework 4 Client Profile在WPF应用程序中运行它,则不会出现位图效果。如果我将框架版本设置为.NET Framework 3.5 Client Profile(并且不更改任何代码),它将按预期运行。起初,我认为这是我的应用程序中的一个问题,但我删除了代码并将其放在一个单独的独立应用程序中,它的行为相同。其他人验证发生了同样的问题吗?

这里发生了什么?

VS2010中的版本4框架似乎忽略了位图效果。

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

5 个答案:

答案 0 :(得分:12)

正如其他人所说:.NET 4.0不再支持BitmapEffects。

作为附加信息:由于没有OuterGlowEffect可以与Effect属性一起使用(至少没有我知道的),您可以用{{替换位图效果3}}并将其DropShadowEffect属性设置为0.然后,您可以通过调整ShadowDepth属性来创建发光效果。此外,如果您希望光源的颜色不是黑色,您还可以调整BlurRadius属性,但正如我从代码示例中看到的那样,您实际上使用黑色作为GlowColor

我知道这种解决方法可能不像OuterGlowBitmapEffect那样灵活和舒适,并且它不会产生相同的结果,但至少在某些情况下接近它,并且它比自己编写像素着色器更容易...

答案 1 :(得分:4)

如Microsoft所述hereBitmapEffect从.NET 4开始已过时。请尝试使用Effect

答案 2 :(得分:3)

.NET 4.0中不再支持BitmapEffects。

您应该使用Effect属性。

有关详细信息,请参阅here

答案 3 :(得分:1)

根据this blog post

  

<强> 5。 BitmapEffect类现在是无操作。
  用于渲染的BitmapEffect   在软件中导致了perf问题。   BitmapEffect仍然存在,所以你的   应用程序将编译但BitmapEffect   不会做任何事情。

答案 4 :(得分:0)

查看Bitmap Effects,了解使用基于GPU的新效果时的一些问题。