2009-11-06 9 views
11

He observado que la aplicación de un efecto DropShadow a un UIElement esporádicamente causa que el contenido del UIElement se borre un poco. Es un efecto bastante desagradable: puede hacer que una fotografía se vea fuera de foco o, lo que es peor, hacer que toda una región "emergente" sea completamente ilegible.WPF DropShadowEffect Causando Blurriness

No he visto a nadie más quejarse de esto, por lo que mi inclinación es pensar que hay algo que estoy haciendo mal.

uso de muestras (borra el contenido al azar):

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

Pero la eliminación de la DropShadowEffect lo aclara:

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

¿Alguna idea?

EDITAR (captura de pantalla añadido):

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

+0

¿Puede publicar una captura de pantalla? –

+0

Captura de pantalla agregada. – egoodberry

Respuesta

12

Lo que hago para este tipo de escenarios es poner un rectángulo de fondo y aplicar el efecto de desenfoque sólo por eso, por lo que el contenido real estará libre de el efecto, que a su vez aumenta el rendimiento. Porque cuando aplicas el efecto a una vista, todos los niños subsecuentes también obtienen el efecto aplicado, lo que hace que el rendimiento y la apariencia se pongan malos. Trato el siguiente

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

Un enfoque muy bueno que parece ser efectivo. ¡Gracias! – egoodberry

+0

Gracias por esto. Acabo de pasar las últimas dos horas buscando un problema de rendimiento que reduje a un efecto de frontera. Estaba buscando una solución y tropecé con esto. Funciona muy bien, gracias de nuevo! –

0

No estoy seguro, pero intente configurar el BlurRadious para la Image.Effects a 0 por defecto es 5 y ver si se puede ayudar?

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

Esto no tiene ningún efecto. – egoodberry

1

Hay una Calidad Rending que puede utilizar para solucionar este problema. El valor predeterminado es parcial para el rendimiento. Haga esto:

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