2010-05-19 64 views
4

我在使用VS2010和帶位圖效果的框架版本4時遇到問題。如果我有以下代碼並使用.NET Framework 4 Client Profile在WPF應用程序中運行它,則不會顯示位圖效果。如果我將框架版本設置爲.NET Framework 3.5 Client Profile(並更改無代碼),它將按預期運行。起初,我認爲這是我的應用程序中的一個問題,但是我刪除了代碼並將其放在單獨的獨立應用程序中,並且其行爲相同。其他人證實同樣的問題發生?WPF中的.NET Framework 4不顯示位圖效果

這裏發生了什麼?

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> 

回答

12

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

作爲附加信息:由於沒有OuterGlowEffect,你可以用Effect財產(至少沒有我所知道的)使用,可以更換一個DropShadowEffect的位圖效果及其ShadowDepth屬性設置爲0。然後,您可以通過調整BlurRadius屬性來創建發光效果。此外,如果您希望輝光具有另一種顏色而不是黑色,則還可以調整Color屬性,但正如我從代碼示例中看到的那樣,實際上使用黑色作爲GlowColor

我知道這個解決方法可能不像OuterGlowBitmapEffect那樣靈活和舒適,並且它不會產生相同的結果,但至少在某些情況下它會接近,而且它肯定比您自己編寫像素着色器更簡單。

+0

謝謝,我已將此標記爲答案,因爲您也正確地注意到OuterGlowEffect不再受支持並提供了替代方案。 – Adrian 2010-05-19 06:35:35

+0

+1:就像旁註一樣:將BlurRadius設置爲0或-1會給你類似的東西,但是你不會像使用OuterGlowBitmapEffect – 2010-05-19 06:39:27

+0

那樣獲得相同的外觀。確實如此。這就是我試圖用*說「可能不那麼靈活」*。將編輯我的答案更加精確。 – gehho 2010-05-19 06:41:50

3

.NET 4.0不再支持BitmapEffects。

您應該改用Effect屬性。

查看here瞭解詳情。

4

如微軟所述,here從.NET 4開始已經過時。請嘗試使用Effect來代替。

1

作爲每this blog post

5.的BitmapEffect類現在是空操作。
BitmapEffect用於在軟件中呈現 並導致perf問題。 BitmapEffect仍然存在,所以你的 應用程序將編譯,但BitmapEffect 不會做任何事情。

0

看看Bitmap Effects,它解釋了使用新的基於GPU的效果時的一些問題。