Exportar (0) Imprimir
Expandir todo
Este artículo proviene de un motor de traducción automática. Mueva el puntero sobre las frases del artículo para ver el texto original. Más información.
Traducción
Original

SplineSingleKeyFrame (Clase)

Se anima desde el valor Single del fotograma clave anterior hasta su propia propiedad Value usando la interpolación spline.

Espacio de nombres:  System.Windows.Media.Animation
Ensamblado:  PresentationCore (en PresentationCore.dll)
XMLNS para XAML: http://schemas.microsoft.com/winfx/2006/xaml/presentation, http://schemas.microsoft.com/netfx/2007/xaml/presentation

public class SplineSingleKeyFrame : SingleKeyFrame
<SplineSingleKeyFrame .../>

El tipo SplineSingleKeyFrame expone los siguientes miembros.

  NombreDescripción
Método públicoSplineSingleKeyFrame()Inicializa una nueva instancia de la clase SplineSingleKeyFrame.
Método públicoSplineSingleKeyFrame(Single)Inicializa una nueva instancia de la clase SplineSingleKeyFrame con el valor final especificado.
Método públicoSplineSingleKeyFrame(Single, KeyTime)Inicializa una nueva instancia de la clase SplineSingleKeyFrame con el valor final y la hora clave especificados.
Método públicoSplineSingleKeyFrame(Single, KeyTime, KeySpline)Inicializa una nueva instancia de la clase SplineSingleKeyFrame con el valor final, la hora clave y el objeto KeySpline especificados.
Arriba

  NombreDescripción
Propiedad públicaCanFreezeObtiene un valor que indica si el objeto se puede crear unmodifiable. (Se hereda de Freezable).
Propiedad públicaDependencyObjectTypeObtiene DependencyObjectType que contiene el tipo de CLR de esta instancia.  (Se hereda de DependencyObject).
Propiedad públicaDispatcherObtiene Dispatcher que este DispatcherObject es asociado. (Se hereda de DispatcherObject).
Propiedad públicaIsFrozenObtiene un valor que indica si el objeto es actualmente modificable. (Se hereda de Freezable).
Propiedad públicaIsSealedObtiene un valor que indica si esta instancia está sellada actualmente (solo lectura). (Se hereda de DependencyObject).
Propiedad públicaKeySplineObtiene o establece los dos puntos de control que definen el progreso de la animación de este fotograma clave.
Propiedad públicaKeyTime Obtiene o establece el tiempo en el que el destino del fotograma clave Value se debe obtener acceso. (Se hereda de SingleKeyFrame).
Propiedad públicaValue Obtiene o establece el valor del objetivo de fotograma clave. (Se hereda de SingleKeyFrame).
Arriba

  NombreDescripción
Método públicoCheckAccessdetermina si el subproceso de la llamada tiene acceso a este DispatcherObject. (Se hereda de DispatcherObject).
Método públicoClearValue(DependencyProperty)borra el valor local de una propiedad. La propiedad que se borrará se especifica mediante un identificador de DependencyProperty . (Se hereda de DependencyObject).
Método públicoClearValue(DependencyPropertyKey)borra el valor local de una propiedad de sólo lectura. la propiedad que se borrará es especificada por DependencyPropertyKey. (Se hereda de DependencyObject).
Método públicoCloneCrea un clon modificable de Freezable, creando las copias en profundidad de los valores del objeto. Al copiar las propiedades del objeto, este método copia las expresiones (que podrían no más resolución) pero no animaciones o sus valores actuales. (Se hereda de Freezable).
Método protegidoCloneCoreCrea la instancia un clon (copia profunda) de Freezable especificado utilizando valores de propiedad (no-animados) base. (Se hereda de Freezable).
Método públicoCloneCurrentValueCrea un clon modificable (copia profunda) de Freezable utilizando los valores actuales. (Se hereda de Freezable).
Método protegidoCloneCurrentValueCoreCrea la instancia un clon modificable (copia profunda) de Freezable especificado utilizando valores de propiedad actuales. (Se hereda de Freezable).
Método públicoCoerceValuefuerza el valor de propiedad de dependenciaespecificado. Esto se logra a cualquier función de CoerceValueCallback especificada en los metadatos de propiedad para la propiedad de dependencia tal como existe en DependencyObjectque llama. (Se hereda de DependencyObject).
Método protegidoCreateInstanceInicializa una nueva instancia de la clase de Freezable . (Se hereda de Freezable).
Método protegidoCreateInstanceCoreCrea una instancia nueva de la clase SplineSingleKeyFrame. (Invalida a Freezable.CreateInstanceCore()).
Método públicoEqualsdetermina si DependencyObject proporcionado es equivalente a DependencyObjectactual. (Se hereda de DependencyObject).
Método protegidoFinalize Permite que un objeto intente liberar recursos y realizar otras operaciones de limpieza antes de ser reclamado por la recolección de elementos no utilizados. (Se hereda de Object).
Método públicoFreeze()Crea el objeto actual unmodifiable y establezca su propiedad de IsFrozen a true. (Se hereda de Freezable).
Método protegidoFreezeCoreHace que el objeto de Freezable unmodifiable o comprueba si se puede crear unmodifiable. (Se hereda de Freezable).
Método públicoGetAsFrozenCrea una copia inmovilizado de Freezable, utilizando valores de propiedad (no-animados) base. Porque se inmoviliza la copia, cualquier subobjeto inmovilizado es copiado por referencia. (Se hereda de Freezable).
Método protegidoGetAsFrozenCoreCrea la instancia un clon inmovilizado de Freezable especificado utilizando valores de propiedad (no-animados) base. (Se hereda de Freezable).
Método públicoGetCurrentValueAsFrozenCrea una copia inmovilizado de Freezable mediante valores de propiedad actuales. Porque se inmoviliza la copia, cualquier subobjeto inmovilizado es copiado por referencia. (Se hereda de Freezable).
Método protegidoGetCurrentValueAsFrozenCoreCrea la instancia actual un clon inmovilizado de Freezableespecificado. Si el objeto ha animado propiedades de dependencia, se copian los valores animados actuales. (Se hereda de Freezable).
Método públicoGetHashCodeobtiene código hash para este DependencyObject. (Se hereda de DependencyObject).
Método públicoGetLocalValueEnumeratorCrea un enumerador especializado para determinar qué propiedades de dependencia localmente han establecido valores en este DependencyObject. (Se hereda de DependencyObject).
Método públicoGetType Obtiene el Type de la instancia actual. (Se hereda de Object).
Método públicoGetValuedevuelve el valor efectivo actual de propiedad de dependencia en esta instancia de DependencyObject. (Se hereda de DependencyObject).
Método públicoInterpolateValueDevuelve el valor interpolado de un fotograma clave concreto en el incremento de progreso proporcionado. (Se hereda de SingleKeyFrame).
Método protegidoInterpolateValueCoreUsa la interpolación spline para efectuar la transición entre el valor del fotograma clave anterior y del fotograma clave actual. (Invalida a SingleKeyFrame.InterpolateValueCore(Single, Double)).
Método públicoInvalidatePropertyEvalúa de nuevo el valor real de la propiedad de dependencia especificada (Se hereda de DependencyObject).
Método protegidoMemberwiseClone Crea una copia superficial del Object actual. (Se hereda de Object).
Método protegidoOnChangedSe invoca cuando se modifica el objeto actual de Freezable . (Se hereda de Freezable).
Método protegidoOnFreezablePropertyChanged(DependencyObject, DependencyObject)Garantiza que los punteros adecuados de contexto se establezcan para un miembro de datos de DependencyObjectType acaba de establecerse que. (Se hereda de Freezable).
Método protegidoOnFreezablePropertyChanged(DependencyObject, DependencyObject, DependencyProperty)Este miembro es compatible con la infraestructura de Windows Presentation Foundation (WPF) y no está diseñado para usarse directamente desde el código. (Se hereda de Freezable).
Método protegidoOnPropertyChangedinvalida la implementación de DependencyObject de OnPropertyChanged también para invocar a cualquier controlador de Changed en respuesta a propiedad de dependencia que cambia de Freezableescrito. (Se hereda de Freezable).
Método públicoReadLocalValuedevuelve el valor local de propiedad de dependencia, si existe. (Se hereda de DependencyObject).
Método protegidoReadPreambleGarantiza que Freezable está teniendo acceso de un subproceso válido. Los herederos de Freezable deben llamar a este método al principio de cualquier API que lea los miembros de datos que no son propiedades de dependencia. (Se hereda de Freezable).
Método públicoSetCurrentValueEstablece el valor de propiedad de dependencia sin cambiar el origen del valor. (Se hereda de DependencyObject).
Método públicoSetValue(DependencyProperty, Object)Establece el valor local de propiedad de dependencia, especificado por el identificador de propiedad de dependencia. (Se hereda de DependencyObject).
Método públicoSetValue(DependencyPropertyKey, Object)establece el valor local de un solo lectura propiedad de dependencia, especificado por el identificador de DependencyPropertyKey de la propiedad de dependencia. (Se hereda de DependencyObject).
Método protegidoShouldSerializePropertyDevuelve un valor que indica si los procesos de serialización debe serializar el valor de propiedad de dependenciaproporcionado. (Se hereda de DependencyObject).
Método públicoToString Retorna una cadena que representa al objeto actual. (Se hereda de Object).
Método públicoVerifyAccessSe aplica al subproceso de llamada tiene acceso a este DispatcherObject. (Se hereda de DispatcherObject).
Método protegidoWritePostscriptProvoca el evento de Changed para Freezable e invoca el método de OnChanged . Las clases que derivan de Freezable deben llamar a este método al final de cualquier API que modificar los miembros de clase que no se almacenan como propiedades de dependencia. (Se hereda de Freezable).
Método protegidoWritePreambleComprueba que Freezable no está inmovilizado y está teniendo acceso de un contexto válido de subprocesamiento. los herederos deFreezable deben llamar a este método al principio de cualquier API que escribe en los miembros de datos que no son propiedades de dependencia. (Se hereda de Freezable).
Arriba

  NombreDescripción
Evento públicoChangedSe produce cuando se modifica Freezable o un objeto que contiene. (Se hereda de Freezable).
Arriba

  NombreDescripción
Campo públicoMiembro estáticoKeySplinePropertyIdentifica la propiedad de dependencia KeySpline.
Arriba

  NombreDescripción
Implementación explícita de interfacesPropiedad privadaIKeyFrame.ValueObtiene o establece el valor asociado a una instancia de KeyTime . (Se hereda de SingleKeyFrame).
Arriba

Esta clase se utiliza como parte de SingleKeyFrameCollection junto con SingleAnimationUsingKeyFrames para animar un valor de propiedad Single a lo largo de un conjunto de fotogramas clave.

Un fotograma clave define un segmento de la SingleAnimationUsingKeyFrames a la que pertenece. Cada fotograma clave tiene una propiedad Value de destino y una propiedad KeyTime. La KeyTime especifica la hora a la que se debe alcanzar el valor Value del fotograma clave. Un fotograma clave anima desde el valor de destino del fotograma clave anterior hasta su propio valor de destino. Se inicia cuando el fotograma clave anterior finaliza y acaba cuando se alcanza su hora clave.

Los fotogramas clave spline, como SplineSingleKeyFrame, crean una transición variable entre los valores, que se determina mediante la propiedad KeySpline. La interpolación spline se puede utilizar para lograr efectos de tiempo más realistas, más parecidos al mundo real, como la aceleración y desaceleración.

En este ejemplo se muestra cómo animar el valor de una propiedad que toma un objeto Double mediante fotogramas clave.

En el ejemplo siguiente se mueve un rectángulo por una pantalla. En el ejemplo se utiliza la clase DoubleAnimationUsingKeyFrames para animar la propiedad X de una clase TranslateTransform aplicada a Rectangle. Esta animación, que se repite indefinidamente, utiliza tres fotogramas clave de la manera siguiente:

  1. Durante los primeros tres segundos, utiliza una instancia de la clase LinearDoubleKeyFrame para mover el rectángulo a lo largo de un trayecto a ritmo constante desde su posición inicial hasta la posición 500. Los fotogramas clave lineales como LinearDoubleKeyFrame crean una transición lineal suave entre valores.

  2. Al final del cuarto segundo, utiliza una instancia de la clase DiscreteDoubleKeyFrame para mover de golpe el rectángulo a la posición siguiente. Los fotogramas clave discretos como DiscreteDoubleKeyFrame crean saltos súbitos entre los valores. En este ejemplo, el rectángulo está en la posición inicial y aparece de pronto en la posición 500.

  3. En los dos segundos finales, se utiliza una instancia de la clase SplineDoubleKeyFrame para devolver el rectángulo a su posición inicial. Los fotogramas clave spline como SplineDoubleKeyFrame crean una transición variable entre los valores según el valor de la propiedad KeySpline. En este ejemplo, el rectángulo comienza a moverse despacio y, a continuación, se va acelerando exponencialmente hasta el final del segmento temporal.


using System;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Shapes;
using System.Windows.Media.Animation;
using System.Windows.Media;

namespace Microsoft.Samples.KeyFrameExamples
{
    /// <summary>
    /// This example shows how to use the DoubleAnimationUsingKeyFrames class to
    /// animate the position of an object.
    /// Key frame animations enable you to create complex animations 
    /// by specifying multiple destination values
    /// and controlling the animation's interpolation method.
    /// </summary>
    public class AltDoubleAnimationUsingKeyFramesExample : Page
    {
        public AltDoubleAnimationUsingKeyFramesExample()
        {
            Title = "DoubleAnimationUsingKeyFrames Example";
            Background = Brushes.White;
            Margin = new Thickness(20);

            // Create a NameScope for this page so that
            // Storyboards can be used.
            NameScope.SetNameScope(this, new NameScope());

            // Create a rectangle.
            Rectangle aRectangle = new Rectangle();
            aRectangle.Width = 100;
            aRectangle.Height = 100;
            aRectangle.Stroke = Brushes.Black;
            aRectangle.StrokeThickness = 5;

            // Create a Canvas to contain and
            // position the rectangle.
            Canvas containerCanvas = new Canvas();
            containerCanvas.Width = 610;
            containerCanvas.Height = 300;
            containerCanvas.Children.Add(aRectangle);
            Canvas.SetTop(aRectangle, 100);
            Canvas.SetLeft(aRectangle, 10);         

            // Create a TranslateTransform to 
            // move the rectangle.
            TranslateTransform animatedTranslateTransform = 
                new TranslateTransform();
            aRectangle.RenderTransform = animatedTranslateTransform;  

            // Assign the TranslateTransform a name so that
            // it can be targeted by a Storyboard.
            this.RegisterName(
                "AnimatedTranslateTransform", animatedTranslateTransform);

            // Create a DoubleAnimationUsingKeyFrames to
            // animate the TranslateTransform.
            DoubleAnimationUsingKeyFrames translationAnimation 
                = new DoubleAnimationUsingKeyFrames();
            translationAnimation.Duration = TimeSpan.FromSeconds(6);

            // Animate from the starting position to 500
            // over the first second using linear
            // interpolation.
            translationAnimation.KeyFrames.Add(
                new LinearDoubleKeyFrame(
                    500, // Target value (KeyValue)
                    KeyTime.FromTimeSpan(TimeSpan.FromSeconds(3))) // KeyTime
                );

            // Animate from 500 (the value of the previous key frame) 
            // to 400 at 4 seconds using discrete interpolation.
            // Because the interpolation is discrete, the rectangle will appear
            // to "jump" from 500 to 400.
            translationAnimation.KeyFrames.Add(
                new DiscreteDoubleKeyFrame(
                    400, // Target value (KeyValue)
                    KeyTime.FromTimeSpan(TimeSpan.FromSeconds(4))) // KeyTime
                );

            // Animate from 400 (the value of the previous key frame) to 0
            // over two seconds, starting at 4 seconds (the key time of the
            // last key frame) and ending at 6 seconds.
            translationAnimation.KeyFrames.Add(
                new SplineDoubleKeyFrame(
                    0, // Target value (KeyValue)
                    KeyTime.FromTimeSpan(TimeSpan.FromSeconds(6)), // KeyTime
                    new KeySpline(0.6,0.0,0.9,0.0) // KeySpline
                    )
                );

            // Set the animation to repeat forever. 
            translationAnimation.RepeatBehavior = RepeatBehavior.Forever;

            // Set the animation to target the X property
            // of the object named "AnimatedTranslateTransform."
            Storyboard.SetTargetName(translationAnimation, "AnimatedTranslateTransform");
            Storyboard.SetTargetProperty(
                translationAnimation, new PropertyPath(TranslateTransform.XProperty));

            // Create a storyboard to apply the animation.
            Storyboard translationStoryboard = new Storyboard();
            translationStoryboard.Children.Add(translationAnimation);

            // Start the storyboard after the rectangle loads.
            aRectangle.Loaded += delegate(object sender, RoutedEventArgs e)
            {
                translationStoryboard.Begin(this);
            };

            Content = containerCanvas;
        }

    }
}



<!-- This example shows how to use the DoubleAnimationUsingKeyFrames to 
     animate the position of an object. 
     Key frame animations enable you to create complex animations 
     by specifying multiple destination values
     and controlling the animation's interpolation method.
-->
<Page 
  xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
  Title="DoubleAnimationUsingKeyFrames Example"
  Background="White" Margin="20">       
  <Canvas Width="610" Height="300">

    <!-- The position of this rectangle is animated using 
         a key frame animation. -->
    <Rectangle 
      Canvas.Top="100"
      Canvas.Left="10"
      Height="100"
      Width="100"
      Stroke="Black"
      StrokeThickness="5">
      <Rectangle.RenderTransform>
        <TranslateTransform x:Name="AnimatedTranslateTransform" />
      </Rectangle.RenderTransform>

      <Rectangle.Triggers>
        <EventTrigger RoutedEvent="Rectangle.Loaded">
          <BeginStoryboard>
            <Storyboard>

              <!-- Animate the TranslateTransform.X property using 3 KeyFrames
                   which animates the rectangle along a straight line. 
                   This animation repeats indefinitely. -->
              <DoubleAnimationUsingKeyFrames
                Storyboard.TargetName="AnimatedTranslateTransform"
                Storyboard.TargetProperty="X"
                Duration="0:0:6"
                RepeatBehavior="Forever">

                <!-- Using a LinearDoubleKeyFrame, the rectangle moves 
                     steadily from its starting position to 500 over 
                     the first 3 seconds.  -->
                <LinearDoubleKeyFrame Value="500" KeyTime="0:0:3" />

                <!-- Using a DiscreteDoubleKeyFrame, the rectangle suddenly 
                     appears at 400 after the fourth second of the animation. -->
                <DiscreteDoubleKeyFrame Value="400" KeyTime="0:0:4" />

                <!-- Using a SplineDoubleKeyFrame, the rectangle moves 
                     back to its starting point. The
                     animation starts out slowly at first and then speeds up. 
                     This KeyFrame ends after the 6th
                     second. -->
                <SplineDoubleKeyFrame KeySpline="0.6,0.0 0.9,0.00" Value="0" KeyTime="0:0:6" />
              </DoubleAnimationUsingKeyFrames>
            </Storyboard>
          </BeginStoryboard>
        </EventTrigger>
      </Rectangle.Triggers>
    </Rectangle>
  </Canvas>
</Page>


Para obtener el ejemplo completo, vea KeyFrame Animation Sample.

Para ofrecer coherencia con otros ejemplos de animación, en las versiones de código de este ejemplo se utiliza un objeto Storyboard para aplicar DoubleAnimationUsingKeyFrames. Como alternativa, al aplicar una animación única en código, es más fácil utilizar el método BeginAnimation en lugar de utilizar Storyboard. Para obtener un ejemplo, vea Cómo: Animar una propiedad sin utilizar un guión gráfico.

.NET Framework

Compatible con: 4.5, 4, 3.5, 3.0

.NET Framework Client Profile

Compatible con: 4, 3.5 SP1

Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (no se admite el rol Server Core), Windows Server 2008 R2 (se admite el rol Server Core con SP1 o versiones posteriores; no se admite Itanium)

.NET Framework no admite todas las versiones de todas las plataformas. Para obtener una lista de las versiones compatibles, vea Requisitos de sistema de .NET Framework.

Todos los miembros públicos static (Shared en Visual Basic) de este tipo son seguros para subprocesos. No se garantiza que los miembros de instancias sean seguros para la ejecución de subprocesos.

Adiciones de comunidad

AGREGAR
Mostrar:
© 2014 Microsoft