Storyboard Classe

Definição

Controla animações com uma linha do tempo e fornece informações de direcionamento de objeto e propriedade para suas animações filho.

public ref class Storyboard sealed : Timeline
/// [Microsoft.UI.Xaml.Markup.ContentProperty(Name="Children")]
/// [Windows.Foundation.Metadata.Activatable(65536, "Microsoft.UI.Xaml.WinUIContract")]
/// [Windows.Foundation.Metadata.ContractVersion(Microsoft.UI.Xaml.WinUIContract, 65536)]
/// [Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
/// [Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
class Storyboard final : Timeline
[Microsoft.UI.Xaml.Markup.ContentProperty(Name="Children")]
[Windows.Foundation.Metadata.Activatable(65536, "Microsoft.UI.Xaml.WinUIContract")]
[Windows.Foundation.Metadata.ContractVersion(typeof(Microsoft.UI.Xaml.WinUIContract), 65536)]
[Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
[Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
public sealed class Storyboard : Timeline
Public NotInheritable Class Storyboard
Inherits Timeline
<Storyboard ...>
  oneOrMoreChildTimelines
</Storyboard>
Herança
Object Platform::Object IInspectable DependencyObject Timeline Storyboard
Atributos

Exemplos

O exemplo a seguir mostra como usar os métodos Begin, Stop, Pause e Resume para controlar a reprodução de um storyboard (animação). Um conjunto de botões permite que o usuário chame esses métodos.

<StackPanel x:Name="LayoutRoot" >
    <StackPanel.Resources>
        <Storyboard x:Name="myStoryboard">
            <DoubleAnimation From="1" To="6" Duration="00:00:6" 
            Storyboard.TargetName="rectScaleTransform" 
            Storyboard.TargetProperty="ScaleY">
                <DoubleAnimation.EasingFunction>
                    <BounceEase Bounces="2" EasingMode="EaseOut" 
                            Bounciness="2" />
                </DoubleAnimation.EasingFunction>
            </DoubleAnimation>
        </Storyboard>
    </StackPanel.Resources>

    <!-- Button that begins animation. -->
    <Button Click="Animation_Begin"
         Margin="2" Content="Begin" />

    <!-- Button that pauses Animation. -->
    <Button Click="Animation_Pause"
         Margin="2" Content="Pause" />

    <!-- Button that resumes Animation. -->
    <Button Click="Animation_Resume"
         Margin="2" Content="Resume" />

    <!-- Button that stops Animation. Stopping the animation 
         returns the ellipse to its original location. -->
    <Button Click="Animation_Stop"
         Margin="2" Content="Stop" />

    <Rectangle Fill="Blue" Width="200" Height="30">
        <Rectangle.RenderTransform>
            <ScaleTransform x:Name="rectScaleTransform" />
        </Rectangle.RenderTransform>
    </Rectangle>

</StackPanel>
private void Animation_Begin(object sender, RoutedEventArgs e)
{
    myStoryboard.Begin();
}
private void Animation_Pause(object sender, RoutedEventArgs e)
{
    myStoryboard.Pause();
}
private void Animation_Resume(object sender, RoutedEventArgs e)
{
    myStoryboard.Resume();
}
private void Animation_Stop(object sender, RoutedEventArgs e)
{
    myStoryboard.Stop();
}

Este exemplo mostra como criar e executar uma animação inteiramente no código.

<Button Content="Create animation" Click="Button_Click"/>
private void Button_Click(object sender, RoutedEventArgs e)
{
    Create_And_Run_Animation();
}

private void Create_And_Run_Animation()
{
    Storyboard justintimeStoryboard = null;
    // If the storyboard already exists in the resources dictionary,
    // get it and make sure it's stopped.
    if (LayoutRoot.Resources.ContainsKey("justintimeStoryboard"))
    {
        justintimeStoryboard = (Storyboard)LayoutRoot.Resources["justintimeStoryboard"];
        justintimeStoryboard.Stop();
    }
    // Otherwise, create the storyboard and add it to the resources dictionary.
    else
    {
        // Create a red rectangle that will be the target
        // of the animation.
        Rectangle myRectangle = new Rectangle();
        myRectangle.Width = 200;
        myRectangle.Height = 200;
        SolidColorBrush myBrush = new SolidColorBrush(Colors.Red);
        myRectangle.Fill = myBrush;

        // Create the transform.
        TranslateTransform moveTransform = new TranslateTransform();
        moveTransform.X = 0;
        moveTransform.Y = 0;
        myRectangle.RenderTransform = moveTransform;

        // Add the rectangle to the tree.
        LayoutRoot.Children.Add(myRectangle);

        // Create a duration of 2 seconds.
        Duration duration = new Duration(TimeSpan.FromSeconds(2));
        // Create two DoubleAnimations and set their properties.
        DoubleAnimation myDoubleAnimationX = new DoubleAnimation();
        DoubleAnimation myDoubleAnimationY = new DoubleAnimation();
        myDoubleAnimationX.Duration = duration;
        myDoubleAnimationY.Duration = duration;
        justintimeStoryboard = new Storyboard();
        justintimeStoryboard.Duration = duration;
        justintimeStoryboard.Children.Add(myDoubleAnimationX);
        justintimeStoryboard.Children.Add(myDoubleAnimationY);
        Storyboard.SetTarget(myDoubleAnimationX, moveTransform);
        Storyboard.SetTarget(myDoubleAnimationY, moveTransform);

        // Set the X and Y properties of the Transform to be the target properties
        // of the two respective DoubleAnimations.
        Storyboard.SetTargetProperty(myDoubleAnimationX, "X");
        Storyboard.SetTargetProperty(myDoubleAnimationY, "Y");
        myDoubleAnimationX.To = 200;
        myDoubleAnimationY.To = 200;

        // Make the Storyboard a resource.
        LayoutRoot.Resources.Add("justintimeStoryboard", justintimeStoryboard);
    }

    // Begin the animation.
    justintimeStoryboard.Begin();
}

Comentários

Storyboard é uma classe importante no conceito de animações storyboarded. Para obter mais informações sobre o conceito, consulte animações storyboarded.

O storyboard é usado para estas propriedades:

Essas propriedades não são o único lugar onde um Storyboard é definido. A maneira típica que um Storyboard é usado para uma animação storyboard é que o Storyboard é definido em uma coleção resources ( Application.Resources ou FrameworkElement.Resources, ou possivelmente como um recurso dentro de um arquivo como Generic.xaml para um controle personalizado). Sempre que ele for definido como um recurso XAML, você sempre deve atribuir um valor de atributo x:Name ao storyboard. Em seguida, você pode referenciar o nome como uma variável de programação posteriormente no code-behind. Você precisará dessa referência para realmente executar as animações que o Storyboard contém, chamando o método Begin nessa instância do Storyboard. O storyboard também tem outros métodos de controle, como Parar , que podem controlar a animação depois disso.

O storyboard herda várias propriedades da Linha do Tempo. Essas propriedades podem ser aplicadas a um Storyboard ou a uma das animações dentro dela (na coleção Children ). Há prós e contras para definir as propriedades da Linha do Tempo no Storyboard principal em vez de em cada animação. Para obter mais informações, consulte animações com storyboard.

Você também precisa de um Storyboard para controlar as animações predefinidas que você adiciona aos controles ou à interface do usuário, se estiver usando uma das animações de tema. Animações de tema não têm um ponto de gatilho inato, portanto, você precisa conter animações de tema em um Storyboard como os Filhos. Se o Storyboard for usado como o valor VisualState.Storyboard , a animação será executada quando esse estado visual for carregado. Ou, se estiver em um VisualTransition.Storyboard, a animação será executada quando essa transição for detectada pelo gerenciador de estado visual. Estas são a maneira mais comum de usar uma animação de tema, mas você também pode colocar uma em um recurso de Storyboard flexível e iniciar explicitamente a animação chamando Begin.

Propriedades anexadas ao XAML

Storyboard é a classe de serviço de host para várias propriedades anexadas XAML. Elas habilitam animações filho sob controle pelo Storyboard para cada destino de elementos de destino separados e propriedades de destino, enquanto ainda seguem a mesma linha do tempo de controle e mecanismo de gatilho que o pai.

Para dar suporte ao acesso do processador XAML às propriedades anexadas e também para expor operações de obtenção e definição equivalentes ao código, cada propriedade anexada XAML tem um par de métodos de acessador Get e Set. Outra maneira de obter ou definir o valor no código é usar o sistema de propriedades de dependência, chamando GetValue ou SetValue e passando o campo de identificador como o identificador da propriedade de dependência.

Propriedade anexada Descrição
Nome do alvo Obtém ou define o nome do objeto a ser animado. Storyboard.TargetName é usado para fazer referência a outro elemento por seu nome. O elemento que está sendo referenciado é o elemento/objeto em que a animação deve ser aplicada. Esse mecanismo faz parte do design básico do sistema de animação: ele permite que os recursos de animação sejam declarados separadamente dos recursos de declaração da interface do usuário e possibilita aplicar uma definição de animação a vários comportamentos de propriedade diferentes. Para o valor de Storyboard.TargetName em uma animação específica, especifique o valor do atributo Name ou x:Name do elemento de destino, que é uma cadeia de caracteres. Esse elemento nomeado já deve existir em alguma outra área de marcação XAML.
O significado das cadeias de caracteres de atributo Name/x:Name é controlado por um conceito de namescope XAML. Para a maioria dos cenários de direcionamento de animação, você não precisará se preocupar com a influência de namescopes XAML, mas poderá encontrar problemas de resolução de nomes XAML se estiver tentando direcionar partes de modelo ou objetos que foram criados usando XamlReader.Load e, posteriormente, adicionados à árvore de objetos. Para obter mais informações, consulte namescopes XAML.
Targetproperty Obtém ou define a propriedade que deve ser animada.Storyboard.TargetProperty tem como destino uma propriedade específica do elemento especificado por Storyboard.TargetName. O valor que você fornece para Storyboard.TargetProperty envolve um conceito conhecido como um caminho de propriedade. Para obter mais informações sobre como especificar um caminho de propriedade para uma animação, consulte Comentários em SetTargetProperty ou Storyboard.TargetProperty ou o tópico de sintaxe Property-path .

Construtores

Nome Description
Storyboard()

Inicializa uma nova instância da classe Storyboard .

Propriedades

Nome Description
AutoReverse

Obtém ou define um valor que indica se a linha do tempo é reproduzida ao contrário depois de concluir uma iteração para frente.

(Herdado de Timeline)
BeginTime

Obtém ou define a hora em que essa Linha do Tempo deve começar.

(Herdado de Timeline)
Children

Obtém a coleção de objetos da Linha do Tempo filho.

Dispatcher

Sempre retorna null em um aplicativo do SDK de Aplicativo do Windows. Em vez disso , use DispatcherQueue .

(Herdado de DependencyObject)
DispatcherQueue

Obtém o DispatcherQueue que este objeto está associado. Representa DispatcherQueue uma instalação que pode acessar o DependencyObject thread da interface do usuário mesmo se o código for iniciado por um thread que não seja da interface do usuário.

(Herdado de DependencyObject)
Duration

Obtém ou define o período de tempo para o qual essa linha do tempo é reproduzida, sem contar repetições.

(Herdado de Timeline)
FillBehavior

Obtém ou define um valor que especifica como a animação se comporta depois de atingir o final de seu período ativo.

(Herdado de Timeline)
RepeatBehavior

Obtém ou define o comportamento recorrente dessa linha do tempo.

(Herdado de Timeline)
SpeedRatio

Obtém ou define a taxa, relativa ao seu pai, em que o tempo progride para esta Linha do Tempo.

(Herdado de Timeline)
TargetNameProperty

Identifica a propriedade anexada Storyboard.TargetName XAML.

TargetPropertyProperty

Identifica a propriedade anexada Storyboard.TargetProperty XAML.

Propriedades Anexadas

Nome Description
TargetName

Obtém ou define o nome do objeto a ser animado.

TargetProperty

Obtém ou define a propriedade que deve ser animada.

Métodos

Nome Description
Begin()

Inicia o conjunto de animações associadas ao storyboard.

ClearValue(DependencyProperty)

Limpa o valor local de uma propriedade de dependência.

(Herdado de DependencyObject)
GetAnimationBaseValue(DependencyProperty)

Retorna qualquer valor base estabelecido para uma propriedade de dependência, que se aplicaria em casos em que uma animação não está ativa.

(Herdado de DependencyObject)
GetCurrentState()

Obtém o estado do relógio do Storyboard.

GetCurrentTime()

Obtém a hora do relógio de animação atual do Storyboard.

GetTargetName(Timeline)

Obtém o valor da propriedade anexada Storyboard.TargetName XAML de um elemento de destino.

GetTargetProperty(Timeline)

Obtém o valor da propriedade anexada Storyboard.TargetProperty XAML de um elemento de destino.

GetValue(DependencyProperty)

Retorna o valor efetivo atual de uma propriedade de dependência de um DependencyObject.

(Herdado de DependencyObject)
Pause()

Pausa o relógio de animação associado ao storyboard.

ReadLocalValue(DependencyProperty)

Retorna o valor local de uma propriedade de dependência, se um valor local for definido.

(Herdado de DependencyObject)
RegisterPropertyChangedCallback(DependencyProperty, DependencyPropertyChangedCallback)

Registra uma função de notificação para escutar alterações em um DependencyProperty específico nesta instância dependencyObject .

(Herdado de DependencyObject)
Resume()

Retoma o relógio de animação ou o estado de tempo de execução associado ao storyboard.

Seek(TimeSpan)

Move o storyboard para a posição de animação especificada. O storyboard executa a busca solicitada quando o próximo tique de relógio ocorre.

SeekAlignedToLastTick(TimeSpan)

Move o storyboard para a posição de animação especificada imediatamente (síncrona).

SetTarget(Timeline, DependencyObject)

Faz com que a Linha do Tempo especificada direcione o objeto especificado.

SetTargetName(Timeline, String)

Define o valor da propriedade anexada Storyboard.TargetName XAML para um elemento de destino.

SetTargetProperty(Timeline, String)

Define o valor da propriedade anexada Storyboard.TargetProperty XAML para um elemento de destino.

SetValue(DependencyProperty, Object)

Define o valor local de uma propriedade de dependência em um DependencyObject.

(Herdado de DependencyObject)
SkipToFill()

Avança a hora atual do relógio do storyboard até o final de seu período ativo.

Stop()

Interrompe o storyboard.

UnregisterPropertyChangedCallback(DependencyProperty, Int64)

Cancela uma notificação de alteração que foi registrada anteriormente chamando RegisterPropertyChangedCallback.

(Herdado de DependencyObject)

Eventos

Nome Description
Completed

Ocorre quando o objeto Storyboard foi concluído.

(Herdado de Timeline)

Aplica-se a

Confira também