Compartilhar via


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çãoObservaçã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.

Captura de tela: Efeito de bitmap OuterGlowBitmapEffect

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

Outros recursos

Bitmap Effects How-to Topics

Exemplos de efeitos de bitmap