Compartilhar via


Visão geral dos efeitos do bitmap

Os efeitos de bitmap permitem que designers e desenvolvedores apliquem efeitos visuais ao conteúdo renderizado do WPF (Windows Presentation Foundation). Por exemplo, efeitos de bitmap permitem que você aplique facilmente um efeito DropShadowBitmapEffect ou um efeito de desfoque a uma imagem ou um botão.

Importante

No .NET Framework 4 ou posterior, a classe BitmapEffect está obsoleta. Se você tentar usar a classe BitmapEffect, obterá uma exceção obsoleta. A alternativa não obsoleta à classe BitmapEffect é a classe Effect. Na maioria das situações, a classe Effect é significativamente mais rápida.

Efeitos de Bitmap do WPF

Efeitos de bitmap (objetoBitmapEffect) são operações simples de processamento de pixel. Um efeito bitmap usa um BitmapSource como entrada e produz um novo BitmapSource depois de aplicar o efeito, como um desfoque ou sombra suspensa. Cada efeito bitmap expõe propriedades que podem controlar as propriedades de filtragem, como Radius de BlurBitmapEffect.

Como um caso especial, no WPF, os efeitos podem ser definidos como propriedades em objetos Visual dinâmicos, como um Button ou TextBox. O processamento de pixel é aplicado e renderizado durante a execução. Nesse caso, no momento da renderização, um Visual é convertido automaticamente em seu BitmapSource equivalente e é alimentado como entrada para o BitmapEffect. A saída substitui o comportamento de renderização padrão do objeto Visual. É por isso que objetos BitmapEffect forçam os visuais a renderizar somente por software, ou seja, quando os efeitos são aplicados, não há aceleração de hardware nos visuais.

Nota

Os efeitos de bitmap do WPF são renderizados no modo de software. Qualquer objeto que aplique um efeito também será renderizado no software. O desempenho é mais degradado ao usar efeitos de Bitmap em visuais grandes ou animar propriedades de um efeito Bitmap. Isso não quer dizer que você não deve usar os efeitos do Bitmap dessa maneira, mas deve ter cuidado e testar minuciosamente para garantir que os usuários estejam recebendo a experiência esperada.

Nota

Os efeitos de bitmap do WPF não dão suporte à execução em ambiente de confiança parcial. Um aplicativo deve ter permissões de confiança total para usar efeitos de bitmap.

Como aplicar um efeito

BitmapEffect é uma propriedade no Visual. Portanto, aplicar os efeitos a elementos visuais, como Button, Image, DrawingVisualou UIElement, é tão fácil quanto definir uma propriedade. BitmapEffect pode ser definido como um único objeto BitmapEffect ou vários efeitos podem ser encadeados usando o objeto BitmapEffectGroup.

O exemplo a seguir demonstra como aplicar um BitmapEffect em XAML (Linguagem de Marcação extensível de aplicativo).

<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>

O exemplo a seguir demonstra como aplicar um BitmapEffect no 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;

Nota

Quando um BitmapEffect é aplicado a um contêiner de layout, como DockPanel ou Canvas, o efeito é aplicado à árvore visual do elemento ou visual, incluindo todos os seus elementos-filho.

Criando efeitos personalizados

O WPF também fornece interfaces não gerenciadas para criar efeitos personalizados que podem ser usados em aplicativos WPF gerenciados. Para obter material de referência adicional para criar efeitos de bitmap personalizados, consulte a documentação efeito bitmap não gerenciado do WPF.

Consulte também