2008-10-09 11 views

Respuesta

5

Después de leer los comentarios en la otra respuesta, en la que indica que desea que el esquema se ajuste a la forma de la imagen, solo puedo sugerir que eche un vistazo al BitmapEffects. Hay uno para un efecto de Resplandor Exterior.

Duplicar los elementos visuales en sí mismos probablemente sería menos eficiente, y probablemente produciría un gran número de complicaciones debido a otros aspectos de esos elementos, como las fijaciones.

Editar: En .NET 4.0, BitmapEffects propiedad y la clase BitmapEffect son obsoletas. Obtendrás una excepción. En cambio, ahora tiene la clase System.Windows.Media.Effects.Effect y sus clases derivadas, junto con propiedades como Visual.VisualEffect.

+0

jaja, acabo de descubrirlo y estaba a punto de publicarlo. Supongo que obtienes el representante. – Dylan

+0

Whee. Me alegro de que estuvieras buscando en los lugares correctos. :) –

+0

Una sugerencia agradable, no sé por qué no pensé en eso primero ... especialmente dado que hice un mouse sobre el efecto el otro día. Una cosa para señalar sobre BitmapEffects, sin embargo, es que son un problema de rendimiento conocido. Por lo tanto, ten cuidado con eso. – cplotts

1

Si ajusta esos objetos visuales en un borde ... y establece la opacidad 0 de forma predeterminada ... entonces podría convertir programáticamente la opacidad a 1 siempre que lo necesite.

¿Eso ayuda?

+0

¿El borde siempre será un rectángulo, o tomará la forma del objeto subyacente? – Dylan

+0

Para responder a mi propia pregunta, el borde seguirá siendo un cuadrado. Aunque esto puede funcionar, estoy buscando que el contorno tenga la misma forma que el objeto Visual. – Dylan

+0

En ese caso, puede duplicar la parte Visual (o la parte exterior 'rectangular' no rectangular del visual), pero dele un poco más de ancho y un poco más de altura (para que parezca un borde) .. . y luego, por supuesto, ¿usar el truco de Opacidad anterior? Funcionaría eso? – cplotts

5

Joel tiene una gran sugerencia acerca del uso de BitmapEffects.

Sin embargo, si puede utilizar .NET 3.5 SP1, lo dirigiría hacia GPU prestados efectos. Entonces, en lugar de usar UIElement.BitmapEffect, usaría UIElement.Effect. .NET 3.5 SP1 tiene dos efectos de GPU integrados: BlurEffect y DropShadowEffect. También puede crear sus propios efectos de GPU ... y aquí es donde usaría ShaderEffect.

Echa un vistazo a la entrada de blog de Greg Schechter series para obtener más información.

Aquí es una pieza de código para un ratón sobre el efecto que acabo implementado hace unos días (que en realidad aparece como una especie de efecto de brillo de mapa de bits externa debido a la ShadowDepth ser 0, pero no exactamente):

<Path 
    x:Name="mouseOverEffect" 
    Width="80" 
    Height="43.916" 
    Stretch="None" 
    Fill="#FFFFFFFF" 
    Opacity="0" 
> 
    <Path.Data> 
     <PathGeometry FillRule="Nonzero"> 
      <PathFigure IsClosed="True" StartPoint="39.9592899612151,25.9913931634531"> 
       <LineSegment Point="80.0000001464848,43.9159987905149"/> 
       <LineSegment Point="39.9513899394755,4.97379893856246E-14"/> 
       <LineSegment Point="1.77635636294422E-15,43.9159987905149"/> 
       <LineSegment Point="39.9592899612151,25.9913931634531"/> 
      </PathFigure> 
     </PathGeometry> 
    </Path.Data> 
    <Path.Effect> 
     <DropShadowEffect 
      Color="#FFFFFFFF" 
      BlurRadius="10" 
      ShadowDepth="0" 
     /> 
    </Path.Effect> 
</Path> 
+0

Desafortunadamente, aún no puedo usar SP1 porque algunos de nuestros clientes se encuentran en entornos muy restringidos (es decir, gubernamentales). – Dylan

Cuestiones relacionadas