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.
BlurBitmapEffect simula um objeto que parece fora de foco.
OuterGlowBitmapEffect cria um halo de cor ao redor do perímetro de um objeto.
DropShadowBitmapEffect cria uma sombra atrás de um objeto.
BevelBitmapEffect cria um bisel que eleva a superfície de uma imagem de acordo com uma curva especificada.
EmbossBitmapEffect cria um mapeamento de colisão de um Visual para dar a impressão de profundidade e textura de uma fonte de luz artificial.
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
.NET Desktop feedback