2009-11-06 12 views
11

Ho notato che applicare un DropShadowEffect a un UIElement fa sporadicamente sfocare un po 'il contenuto di UIElement. È un effetto piuttosto sgradevole: può far sì che una foto appaia sfuocata o peggio - rende completamente illeggibile un'intera regione di "popup".WPF DropShadowEffect Causare sfocatura

Non ho visto nessun altro lamentarsi di questo, quindi la mia inclinazione è pensare che ci sia qualcosa che sto sbagliando.

uso del campione (offusca il contenuto a caso):

<Border> 
    <Border.Effect> 
     <DropShadowEffect /> 
    </Border.Effect> 
    <!-- (Content) --> 
</Border> 

Ma la rimozione del DropShadowEffect libera up:

<Border> 
    <!--<Border.Effect> 
      <DropShadowEffect /> 
     </Border.Effect>--> 
    <!-- (Content) --> 
</Border> 

Tutte le idee?

EDIT (screenshot aggiunto):

alt text http://signmgmt.com/eg/dropshadowblur.png

+0

Puoi pubblicare uno screenshot? –

+0

Schermata aggiunta. – egoodberry

risposta

12

Quello che faccio per questo tipo di scenari sta mettendo un rettangolo di sfondo e applicare l'effetto sfocatura proprio per questo, in modo che il contenuto vero e proprio sarà libero da l'effetto, che a sua volta aumenta le prestazioni. Perché quando applichi l'effetto a un oggetto visivo anche tutti i bambini successivi stanno applicando l'effetto, il che rende il perf e l'aspetto peggiori. Prova il seguito

<Grid> 
    <Rectangle ....> 
    <Rectangle.Effect> 
    <DropShadowEffect /> 
    </Rectangle.Effect> 
</Rectangle> 
....Your content ... 
</Grid> 
+0

Un ottimo approccio che sembra essere efficace. Grazie! – egoodberry

+0

Grazie per questo. Ho appena trascorso le ultime due ore rintracciando un problema di prestazioni che ho ridotto a un effetto di confine. Stavo cercando una soluzione e sono inciampato in questo. Funziona alla grande, grazie ancora! –

0

Non sono sicuro, ma provare a impostare il BlurRadious per il Image.Effects-0 di default è 5 e vedere se vi aiuterà?

<Image.Effect> 
    <DropShadowEffect BlurRadius="0"/> 
</Image.Effect> 
+0

Questo non ha alcun effetto. – egoodberry

1

Esiste un RendingQuality che è possibile utilizzare per risolvere questo problema. L'impostazione predefinita è distorta per le prestazioni. Basta fare questo:

<DropShadowEffect Color="#FFFD1E1E" ShadowDepth="0" RenderingBias="Quality"/>