Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
As transições implícitas animam automaticamente alterações em propriedades específicas do UIElement. Em vez de escrever código de animação explícito, anexas um objeto de transição a uma propriedade e o WinUI 3 anima qualquer alteração de valor de forma fluida.
O WinUI 3 fornece três classes de transição:
| Classe de transição | Animações |
|---|---|
ScalarTransition |
Opacity, Rotation |
Vector3Transition |
Scale, Translation |
BrushTransition |
Background; Foreground em elementos que expõem ForegroundTransition (por exemplo, TextBlock) |
Animar as alterações de opacidade
Anexe um ScalarTransition à propriedade OpacityTransition para animar as alterações de opacidade:
<Rectangle x:Name="MyRect" Width="80" Height="80" Opacity="1.0">
<Rectangle.OpacityTransition>
<ScalarTransition />
</Rectangle.OpacityTransition>
</Rectangle>
Quando alteras MyRect.Opacity o código, o WinUI 3 anima automaticamente a alteração:
MyRect.Opacity = 0.2; // Animates from 1.0 to 0.2
Animar alterações de rotação
Anexe um ScalarTransition à propriedade RotationTransition:
<Rectangle x:Name="MyRect" Width="80" Height="80">
<Rectangle.RotationTransition>
<ScalarTransition />
</Rectangle.RotationTransition>
</Rectangle>
// Read ActualWidth/ActualHeight in Loaded or SizeChanged — they are 0 until layout runs.
private void MyRect_Loaded(object sender, RoutedEventArgs e)
{
MyRect.CenterPoint = new System.Numerics.Vector3(
(float)MyRect.ActualWidth / 2,
(float)MyRect.ActualHeight / 2,
0f);
MyRect.Rotation = 90; // Animates to 90 degrees
}
Animar alterações de escala
Anexe um Vector3Transition à propriedade ScaleTransition:
<Rectangle x:Name="MyRect" Width="80" Height="80">
<Rectangle.ScaleTransition>
<Vector3Transition />
</Rectangle.ScaleTransition>
</Rectangle>
MyRect.Scale = new System.Numerics.Vector3(1.5f, 1.5f, 1.0f); // Animates scale up
Alterações de tradução animada
Anexe Vector3Transition à propriedade TranslationTransition:
<Rectangle x:Name="MyRect" Width="80" Height="80">
<Rectangle.TranslationTransition>
<Vector3Transition />
</Rectangle.TranslationTransition>
</Rectangle>
MyRect.Translation = new System.Numerics.Vector3(100, 0, 0); // Moves 100px right
Animar alterações de pincel de fundo
Associe BrushTransition à propriedade BackgroundTransition de um painel ou ContentPresenter:
<ContentPresenter x:Name="MyPresenter" Width="80" Height="80" Background="Blue">
<ContentPresenter.BackgroundTransition>
<BrushTransition />
</ContentPresenter.BackgroundTransition>
</ContentPresenter>
// Animate from Blue to Yellow when the background is replaced with a new brush
MyPresenter.Background = new SolidColorBrush(Colors.Yellow);
Note
BrushTransition anima entre duas instâncias de pincel separadas. Definir uma nova cor no objeto existente SolidColorBrush não desencadeia a transição. Atribui um novo SolidColorBrush objeto para ativar a animação.
Configurar a duração da transição
Por defeito, as transições usam uma duração definida pela plataforma. Pode substituí-lo com a propriedade Duration:
<Rectangle.OpacityTransition>
<ScalarTransition Duration="0:0:0.5" />
</Rectangle.OpacityTransition>
O valor Duration é TimeSpan no formato hours:minutes:seconds, com segundos fracionários opcionais (por exemplo, 0:0:0.5 para 500 ms).
Abra a Galeria do WinUI 3
A aplicação WinUI 3 Gallery inclui exemplos interativos da maioria dos controlos e funcionalidades do WinUI 3.
Artigos relacionados
Windows developer