我在使用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>
答案 0 :(得分:12)
正如其他人所说:.NET 4.0不再支持BitmapEffects。
作为附加信息:由于没有OuterGlowEffect
可以与Effect
属性一起使用(至少没有我知道的),您可以用{{替换位图效果3}}并将其DropShadowEffect
属性设置为0.然后,您可以通过调整ShadowDepth
属性来创建发光效果。此外,如果您希望光源的颜色不是黑色,您还可以调整BlurRadius
属性,但正如我从代码示例中看到的那样,您实际上使用黑色作为GlowColor
。
我知道这种解决方法可能不像OuterGlowBitmapEffect
那样灵活和舒适,并且它不会产生相同的结果,但至少在某些情况下接近它,并且它比自己编写像素着色器更容易...
答案 1 :(得分:4)
如Microsoft所述here,BitmapEffect
从.NET 4开始已过时。请尝试使用Effect
。
答案 2 :(得分:3)
答案 3 :(得分:1)
<强> 5。 BitmapEffect类现在是无操作。
用于渲染的BitmapEffect 在软件中导致了perf问题。 BitmapEffect仍然存在,所以你的 应用程序将编译但BitmapEffect 不会做任何事情。
答案 4 :(得分:0)
查看Bitmap Effects,了解使用基于GPU的新效果时的一些问题。