Partilhar via


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 de 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 para a classe BitmapEffect é a classe Effect. Na maioria das situações, a classe Effect é significativamente mais rápida.

Efeitos de bitmap do WPF

Os efeitos de bitmap (objetoBitmapEffect) são operações simples de processamento de pixels. Um efeito de bitmap recebe um BitmapSource como entrada e produz um novo BitmapSource após a aplicação do efeito, como um desfoque ou sombra. 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 Visual dinâmicos, como um Button ou TextBox. O processamento de pixel é aplicado e renderizado em tempo real. Neste caso, no momento da renderização, um Visual é convertido automaticamente em seu equivalente BitmapSource e é alimentado como entrada para o BitmapEffect. A saída substitui o comportamento de renderização padrão do objeto Visual. É por isso que os objetos BitmapEffect fazem com que as representações visuais sejam processadas apenas por software, ou seja, sem aceleração de hardware, 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 no software. O desempenho é mais degradado quando se utilizam 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 dessa maneira, mas você deve ter cuidado e testar completamente para garantir que seus usuários estejam obtendo 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 elementos visuais, como um 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 Extensible Application Markup Language (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>

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;

Observação

Quando um BitmapEffect é aplicado a um container de layout, como DockPanel ou Canvas, o efeito é aplicado à árvore visual do elemento ou estrutura 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 Unmanaged WPF Bitmap Effect.

Ver também