Visão geral dos efeitos de bitmap

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

Importante

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

Efeitos de bitmap do WPF

Efeitos de bitmap (BitmapEffect objeto) são operações simples de processamento de pixel. Um efeito de bitmap usa um como uma entrada e produz um novo BitmapSource após a aplicação do efeito, como um BitmapSource desfoque ou sombra projetada. Cada efeito de 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 dinâmicos Visual , como um Button ou TextBox. O processamento de pixel é aplicado e renderizado no tempo de execução. Nesse caso, no momento da renderização, a Visual é automaticamente convertido em seu BitmapSource equivalente e é alimentado como entrada para o BitmapEffect. A saída substitui o Visual comportamento de renderização padrão do objeto. É por isso que BitmapEffect os objetos forçam os visuais a renderizar apenas no software, ou seja, nenhuma aceleração de hardware nos visuais quando os efeitos são aplicados.

Observação

Os efeitos de bitmap do WPF são renderizados no modo de software. Qualquer objeto que aplique um efeito também será renderizado em software. A maior redução de desempenho acontece ao usar efeitos de Bitmap em visuais grandes ou ao animar propriedades de um efeito de Bitmap. Isso é não quer dizer que você não deva usar efeitos de Bitmap desta forma, mas deve ter cuidado e testar totalmente para garantir que os usuários tenham a experiência esperada.

Observação

Os efeitos de bitmap do WPF não oferecem suporte à execução 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 em Visual. Portanto, aplicar efeitos a Visuais, como um Button, , ou UIElement, ImageDrawingVisualé tão fácil quanto definir uma propriedade. BitmapEffect pode ser definido como um único BitmapEffect objeto ou vários efeitos podem ser encadeados usando o BitmapEffectGroup objeto.

O exemplo a seguir demonstra como aplicar um BitmapEffect em XAML (Extensible Application Markup Language).

<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 código in.

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

Observação

Quando um é aplicado a um BitmapEffect contêiner de layout, como DockPanel ou , o efeito é aplicado à árvore visual do elemento ou Canvasvisual, 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 material de referência adicional para a criação de efeitos de bitmap personalizados, consulte a documentação Unmanaged WPF Bitmap Effect (Efeito de bitmap WPF não gerenciado).

Confira também