Como: Criar um Efeito de Brilho nas Bordas Externas de um Objeto
Este tópico explica como criar um efeito do brilho na borda externa de um objeto.
Exemplo
Você pode usar a classe OuterGlowBitmapEffect para criar um efeito do brilho ao redor de um objeto visível. Este exemplo mostra como realizar as seguintes tarefas:
Usar marcação simples para aplicar o efeito do brilho sobre um objeto.
Usar um Style para aplicar o efeito do brilho a um ou mais objetos.
Usar marcação com code-behind para aplicar o efeito do brilho sobre um objeto.
Usar uma animação para animar as propriedades de um efeito do brilho que está aplicado sobre um objeto.
Observação: |
---|
Todos os exemplos a seguir Aplicar somente um único efeito a um objeto. Para aplicar vários efeitos Use BitmapEffectGroup. Para obter mais informações, consulte Como: Criar vários efeitos visuais. |
O exemplo a seguir mostra como usar um OuterGlowBitmapEffect para criar um brilho azul ao redor da borda externa de um TextBox.
<Page xmlns="https://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="https://schemas.microsoft.com/winfx/2006/xaml">
<StackPanel>
<TextBox Width="200">
<TextBox.BitmapEffect>
<!-- <BitmapEffectGroup> would go here if you wanted to apply more
then one effect to the TextBox. However, in this example only
one effect is being applied so BitmapEffectGroup does not need
to be included. -->
<!-- The OuterGlow is blue, extends out 30 pixels, has the
maximum noise possible, and is 40% Opaque. -->
<OuterGlowBitmapEffect GlowColor="Blue" GlowSize="30" Noise="1"
Opacity="0.4" />
</TextBox.BitmapEffect>
</TextBox>
</StackPanel>
</Page>
A ilustração a seguir mostra o efeito de brilho externo que é criado pelo exemplo anterior.
O exemplo a seguir mostra como usar a classe Style para aplicar um OuterGlowBitmapEffect a qualquer TextBox na página que receba o foco.
<Page xmlns="https://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="https://schemas.microsoft.com/winfx/2006/xaml">
<!-- Resources define Styles for the entire page. -->
<Page.Resources>
<!-- This style applies to any TextBox on the page. -->
<Style TargetType="{x:Type TextBox}">
<Style.Triggers>
<!-- When the TextBox gains focus such as when the cursor appears
in the TextBox, apply the OuterGlowBitmapEffect to the TextBox. -->
<Trigger Property="IsFocused" Value="True">
<Setter Property = "BitmapEffect" >
<Setter.Value>
<!-- The OuterGlow is blue, extends out 30 pixels, has the
maximum noise possible, and is 40% Opaque. -->
<OuterGlowBitmapEffect GlowColor="Blue" GlowSize="30" Noise="1"
Opacity="0.4" />
</Setter.Value>
</Setter>
</Trigger>
</Style.Triggers>
</Style>
</Page.Resources>
<StackPanel>
<!-- The Style defined above applies to this TextBox which creates
an outer glow around the it. -->
<TextBox Name="textBox1" Width="200" />
</StackPanel>
</Page>
O exemplo a seguir mostra como usar a marcação com code-behind para aplicar um OuterGlowBitmapEffect sobre um TextBox. O efeito de brilho aparece quando o TextBox recebe o foco. Este exemplo mostra a marcação.
<Page xmlns="https://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="https://schemas.microsoft.com/winfx/2006/xaml"
x:Class="SDKSample.OuterGlowExample" >
<StackPanel>
<!-- When this TextBox gains focus, a blue glow surrounds it. -->
<TextBox Width="200" GotFocus="OnFocusCreateGlow"></TextBox>
</StackPanel>
</Page>
O exemplo a seguir mostra o code-behind que trata o evento para a marcação anterior.
using System;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Media;
using System.Windows.Input;
using System.Windows.Media.Effects;
namespace SDKSample
{
public partial class OuterGlowExample : Page
{
// Add OuterGlow effect.
void OnFocusCreateGlow(object sender, RoutedEventArgs args)
{
// Get a reference to the TextBox.
TextBox myTextBox = (TextBox)sender;
// Initialize a new OuterGlowBitmapEffect that will be applied
// to the TextBox.
OuterGlowBitmapEffect myGlowEffect = new OuterGlowBitmapEffect();
// Set the size of the glow to 30 pixels.
myGlowEffect.GlowSize = 30;
// Set the color of the glow to blue.
Color myGlowColor = new Color();
myGlowColor.ScA = 1;
myGlowColor.ScB = 1;
myGlowColor.ScG = 0;
myGlowColor.ScR = 0;
myGlowEffect.GlowColor = myGlowColor;
// Set the noise of the effect to the maximum possible (range 0-1).
myGlowEffect.Noise = 1;
// Set the Opacity of the effect to 40%. Note that the same effect
// could be done by setting the ScA property of the Color to 0.4.
myGlowEffect.Opacity = 0.4;
// Apply the bitmap effect to the TextBox.
myTextBox.BitmapEffect = myGlowEffect;
}
}
}
O exemplo a seguir mostra como animar a propriedade GlowSize do OuterGlowBitmapEffect para fazer com que o brilho se expanda quando o TextBox receber o foco.
<Page xmlns="https://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="https://schemas.microsoft.com/winfx/2006/xaml" >
<StackPanel>
<TextBox Width="200">
<TextBox.BitmapEffect>
<!-- This BitmapEffect is targeted by the animation. -->
<OuterGlowBitmapEffect x:Name="myOuterGlowBitmapEffect"
GlowColor="Blue" GlowSize="0" />
</TextBox.BitmapEffect>
<TextBox.Triggers>
<EventTrigger RoutedEvent="TextBox.GotFocus">
<BeginStoryboard>
<Storyboard>
<!-- Animate the GlowSize from 0 to 40 over half a second. -->
<DoubleAnimation
Storyboard.TargetName="myOuterGlowBitmapEffect"
Storyboard.TargetProperty="GlowSize"
From="0" To="40" Duration="0:0:0.5" />
</Storyboard>
</BeginStoryboard>
</EventTrigger>
</TextBox.Triggers>
</TextBox>
</StackPanel>
</Page>
For the complete sample, see Exemplo da galeria Efeitos bitmap.
Consulte também
Tarefas
Como: Apply a Blur Effect to a Visual
Como: Create a Drop Shadow Visual Effect
Como: Criar vários efeitos visuais
Como: Animate Multiple Visual Effects
Exemplo da galeria Efeitos bitmap
Conceitos
Visão Geral de Efeitos de Bitmap