Compartir a través de


Cómo: Crear un efecto de texto

Actualización: noviembre 2007

TextEffect es un objeto auxiliar que permite tratar el texto como uno o más grupos de caracteres en una cadena de texto. En el ejemplo siguiente, tomado de Ejemplo TextEffect, se muestra un carácter individual al que se aplica una rotación. Cada carácter gira de manera independiente a intervalos de 1 segundo.

Ejemplo de animación de efecto de texto giratorio
Captura de pantalla de efecto de texto girando texto

Ejemplo

En el ejemplo de código siguiente, se define un efecto TextEffect para un objeto TextBlock. En este caso, el efecto de animación deseado es una transformación RotateTransform, que se aplicará a cada carácter en la propiedad Text.

<TextBlock.TextEffects>
  <!-- The TextEffect to animate. -->
  <TextEffect PositionCount="1" x:Name="MyTextEffect">
    <TextEffect.Transform>
      <RotateTransform x:Name="TextEffectRotateTransform" 
        Angle="0" CenterX="10" CenterY="10" />
    </TextEffect.Transform>
  </TextEffect>
</TextBlock.TextEffects>

Nota

Si desea girar la cadena de texto completa como una sola unidad, aplique la transformación RotateTransform a la propiedad RenderTransform de TextBlock. Para obtener más información, consulte Cómo: Aplicar animaciones a texto.

En el ejemplo de código siguiente se muestran las animaciones que se definen para las propiedades Angle y CenterX. La secuencia de animación se controla definiendo un objeto Int32AnimationUsingKeyFrames y haciendo referencia a TextEffect al establecer TargetName y TargetProperty. La propiedad PositionStart cambia de 0 a 12 durante la secuencia de animación, lo que corresponde a la cadena de texto de 13 caracteres.

  <TextBlock.Triggers>
    <EventTrigger RoutedEvent="TextBlock.Loaded">
      <EventTrigger.Actions>
      <BeginStoryboard>
        <Storyboard>
          <ParallelTimeline RepeatBehavior="Forever">

            <!-- Animates the angle of the RotateTransform
                 applied to the TextEffect. -->
            <DoubleAnimation
              Storyboard.TargetName="TextEffectRotateTransform"
              Storyboard.TargetProperty="Angle" 
              From="0"
              To="360"
              Duration="00:00:0.75"                
              BeginTime="0:0:0.25" />
          </ParallelTimeline>

          <!-- Animates the horizontal center of the RotateTransform
               applied to the TextEffect. -->
          <DoubleAnimation
            From="30"
            To="370"
            Duration="00:00:13"
            RepeatBehavior="Forever"
            AutoReverse="True"
            Storyboard.TargetName="TextEffectRotateTransform"
            Storyboard.TargetProperty="CenterX" />

          <!-- Animates the position of the TextEffect. -->
          <Int32AnimationUsingKeyFrames
            Storyboard.TargetName="MyTextEffect"
            Storyboard.TargetProperty="PositionStart"
            Duration="0:0:13"
            AutoReverse="True"
            RepeatBehavior="Forever">
            <Int32AnimationUsingKeyFrames.KeyFrames>
              <DiscreteInt32KeyFrame Value="0" KeyTime="0:0:0" />
              <DiscreteInt32KeyFrame Value="1" KeyTime="0:0:1" />
              <DiscreteInt32KeyFrame Value="2" KeyTime="0:0:2" />
              <DiscreteInt32KeyFrame Value="3" KeyTime="0:0:3" />
              <DiscreteInt32KeyFrame Value="4" KeyTime="0:0:4" />
              <DiscreteInt32KeyFrame Value="5" KeyTime="0:0:5" />
              <DiscreteInt32KeyFrame Value="6" KeyTime="0:0:6" />
              <DiscreteInt32KeyFrame Value="7" KeyTime="0:0:7" />
              <DiscreteInt32KeyFrame Value="8" KeyTime="0:0:8" />
              <DiscreteInt32KeyFrame Value="9" KeyTime="0:0:9" />
              <DiscreteInt32KeyFrame Value="10" KeyTime="0:0:10" />
              <DiscreteInt32KeyFrame Value="11" KeyTime="0:0:11" />
              <DiscreteInt32KeyFrame Value="12" KeyTime="0:0:12" />
            </Int32AnimationUsingKeyFrames.KeyFrames>
          </Int32AnimationUsingKeyFrames>
        </Storyboard>
      </BeginStoryboard>
      </EventTrigger.Actions>
    </EventTrigger>
  </TextBlock.Triggers>
</TextBlock>

Vea también

Tareas

Ejemplo TextEffect

Cómo: Aplicar animaciones a texto