Compartir a través de


Información general sobre efectos de mapa de bits

Actualización: noviembre 2007

Los efectos de mapa de bits permiten a los diseñadores y programadores aplicar efectos visuales al contenido Windows Presentation Foundation (WPF) representado. Por ejemplo, los efectos de mapa de bits permiten aplicar con facilidad un efecto DropShadowBitmapEffect o un efecto de desenfoque a una imagen o un botón.

Este tema contiene las secciones siguientes.

  • Efectos de mapa de bits en WPF
  • Cómo aplicar un efecto
  • Crear efectos personalizados
  • Temas relacionados

Efectos de mapa de bits en WPF

Los efectos de mapa de bits (objetoBitmapEffect) son operaciones simples de procesamiento de píxeles. Un efecto de mapa de bits acepta un objeto BitmapSource como entrada y genera un nuevo BitmapSource después de aplicar el efecto, como un desenfoque o una sombra. Cada efecto de mapa de bits expone propiedades que pueden controlar las propiedades de filtrado, como Radius de BlurBitmapEffect.

Como caso especial, en WPF, los efectos se pueden establecer como propiedades en los objetos Visual activos, como Button o TextBox. El procesamiento de píxeles se aplica y representa en tiempo de ejecución. En este caso, al realizar la representación, un objeto Visual se convierte automáticamente en su BitmapSource equivalente y se utiliza como datos de entrada en BitmapEffect. El resultado reemplaza el comportamiento de representación predeterminado del objeto Visual. Por este motivo, los objetos BitmapEffect fuerzan la representación de los objetos visuales únicamente en software, es decir, no se aplica ninguna aceleración de hardware a los elementos visuales cuando se aplican efectos.

Nota

Los efectos de mapa de bits de WPF se representan en modo de software. Cualquier objeto que aplique un efecto también se representará en software. Cuando más se degrada el rendimiento es al utilizar efectos de mapa de bits en objetos visuales grandes o al animar las propiedades de un efecto de mapa de bits. Esto no quiere decir que no haya que utilizar nunca los efectos de mapa de bits, pero sí debe extremar las precauciones y efectuar pruebas exhaustivas para asegurarse de que los usuarios obtengan la experiencia esperada.

Nota

Los efectos de mapa de bits de WPF no admiten la ejecución de confianza parcial. Una aplicación debe tener permisos de plena confianza para usar efectos de mapa de bits.

Cómo aplicar un efecto

BitmapEffect es una propiedad de Visual. Así pues, aplicar efectos a los objetos visuales, tales como Button, Image, DrawingVisual o UIElement, es tan sencillo como establecer la propiedad. BitmapEffect se puede establecer en un solo objeto BitmapEffect, pero también se pueden encadenar varios efectos mediante el objeto BitmapEffectGroup.

En el ejemplo de código siguiente se muestra cómo se aplica BitmapEffect en Lenguaje de marcado de aplicaciones extensible (XAML).

<Button  Width="200">You Can't Read This!
  <Button.BitmapEffect>

  <!-- <BitmapEffectGroup> would go here if you wanted to apply more 
         then one effect to the Button. However, in this example only  
         one effect is being applied so BitmapEffectGroup does not need  
         to be included. -->

    <!-- The larger the Radius, the more blurring. The default range is 20.
         In addition, the KernelType is set to a box kernel. A box kernel
         creates less disruption (less blur) then the default Gaussian kernel. -->
    <BlurBitmapEffect Radius="10" KernelType="Box" />

  </Button.BitmapEffect>
</Button>

En el ejemplo de código siguiente se muestra cómo se aplica BitmapEffect mediante código.

// Get a reference to the Button.
Button myButton = (Button)sender;

// Initialize a new BlurBitmapEffect that will be applied
// to the Button.
BlurBitmapEffect myBlurEffect = new BlurBitmapEffect();

// Set the Radius property of the blur. This determines how 
// blurry the effect will be. The larger the radius, the more
// blurring. 
myBlurEffect.Radius = 10;

// Set the KernelType property of the blur. A KernalType of "Box"
// creates less blur than the Gaussian kernal type.
myBlurEffect.KernelType = KernelType.Box;

// Apply the bitmap effect to the Button.
myButton.BitmapEffect = myBlurEffect;

Consulte Cómo: Crear varios efectos visuales para obtener ejemplos en los que se muestra cómo aplicar varios efectos mediante el objeto BitmapEffectGroup.

Nota

Cuando BitmapEffect se aplica a un contenedor de diseño, como DockPanel o Canvas, el efecto se aplica al árbol visual del elemento u objeto visual, incluidos todos sus elementos secundarios.

Crear efectos personalizados

WPF también proporciona interfaces no administradas para crear efectos personalizados que se pueden usar en aplicaciones de WPF administradas. Si desea obtener material de referencia adicional para crear efectos de mapa de bits personalizados, consulte la documentación de Unmanaged WPF Bitmap Effect.

Para obtener un ejemplo de efecto de mapa de bits personalizado, consulte Ejemplo Custom BitmapEffect Sample: RGBFilter. En este ejemplo se muestran las interfaces no administradas que se necesitan para crear un efecto personalizado, una capa de interoperabilidad administrada y una aplicación de WPF que utiliza el efecto personalizado.

Vea también

Tareas

Cómo: Animar un efecto visual de desenfoque

Cómo: Animar un efecto de resplandor

Cómo: Animar un efecto visual de sombra paralela

Cómo: Animar un efecto visual con bisel

Cómo: Animar un efecto visual con relieves

Conceptos

Información general sobre imágenes

Seguridad de Windows Presentation Foundation

Información general sobre la representación de gráficos en Windows Presentation Foundation

Optimizar el rendimiento: Imágenes y gráficos 2D

Referencia

BitmapEffectGroup

BitmapEffectInput

BitmapEffectCollection

Unmanaged WPF Bitmap Effect