ColorAnimation 類別
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
public ref class ColorAnimation sealed : Timeline
/// [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 ColorAnimation final : Timeline
[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 ColorAnimation : Timeline
Public NotInheritable Class ColorAnimation
Inherits Timeline
<ColorAnimation .../>
- 繼承
- 屬性
範例
下列範例示範如何使用 ColorAnimation 以動畫顯示 StackPanel的背景色彩。
<StackPanel x:Name="myStackPanel" Background="Red"
Loaded="Start_Animation">
<StackPanel.Resources>
<Storyboard x:Name="colorStoryboard">
<!-- Animate the background color of the canvas from red to green
over 4 seconds. -->
<ColorAnimation Storyboard.TargetName="myStackPanel"
Storyboard.TargetProperty="(Panel.Background).(SolidColorBrush.Color)"
From="Red" To="Blue" Duration="0:0:4"/>
</Storyboard>
</StackPanel.Resources>
</StackPanel>
<StackPanel x:Name="myStackPanel" Background="Red"
Loaded="Start_Animation">
<StackPanel.Resources>
<Storyboard x:Name="colorStoryboard">
<ColorAnimationUsingKeyFrames Storyboard.TargetName="myStackPanel"
Storyboard.TargetProperty="(Panel.Background).(SolidColorBrush.Color)">
<!-- Go from green to red in the first 2 seconds. LinearColorKeyFrame creates
a smooth, linear animation between values. -->
<LinearColorKeyFrame Value="Blue" KeyTime="00:00:02" />
<!-- In the next half second, go to yellow. DiscreteColorKeyFrame creates a
sudden jump between values. -->
<DiscreteColorKeyFrame Value="Yellow" KeyTime="00:00:2.5" />
<!-- In the final 2 seconds of the animation, go from yellow back to green. SplineColorKeyFrame
creates a variable transition between values depending on the KeySpline property. In this example,
the animation starts off slow but toward the end of the time segment, it speeds up exponentially.-->
<SplineColorKeyFrame Value="Green" KeyTime="00:00:4.5" KeySpline="0.6,0.0 0.9,0.00" />
</ColorAnimationUsingKeyFrames>
</Storyboard>
</StackPanel.Resources>
</StackPanel>
<StackPanel Loaded="Start_Animation">
<StackPanel.Resources>
<Storyboard x:Name="colorStoryboard">
<!-- Animate the background color of the canvas from red to green
over 4 seconds. -->
<ColorAnimation Storyboard.TargetName="mySolidColorBrush"
Storyboard.TargetProperty="Color" From="Red" To="Blue" Duration="0:0:4"/>
</Storyboard>
</StackPanel.Resources>
<StackPanel.Background>
<SolidColorBrush x:Name="mySolidColorBrush" Color="Red" />
</StackPanel.Background>
</StackPanel>
// Start the animation when the object loads.
private void Start_Animation(object sender, RoutedEventArgs e)
{
colorStoryboard.Begin();
}
Storyboard.TargetProperty="(Panel.Background).(SolidColorBrush.Color)"
或者,您可以明確建立 SolidColorBrush、命名它,並直接以其 Color 屬性為目標。 下列範例示範如何建立與前一個動畫相同的動畫,但會使用直接屬性目標。
<StackPanel Loaded="Start_Animation">
<StackPanel.Resources>
<Storyboard x:Name="colorStoryboard">
<!-- Animate the background color of the canvas from red to green
over 4 seconds. -->
<ColorAnimation Storyboard.TargetName="mySolidColorBrush"
Storyboard.TargetProperty="Color" From="Red" To="Blue" Duration="0:0:4"/>
</Storyboard>
</StackPanel.Resources>
<StackPanel.Background>
<SolidColorBrush x:Name="mySolidColorBrush" Color="Red" />
</StackPanel.Background>
</StackPanel>
// Start the animation when the object loads.
private void Start_Animation(object sender, RoutedEventArgs e)
{
colorStoryboard.Begin();
}
備註
使用 ColorAnimation 以動畫顯示 任何屬於 Color類型的相依性屬性的屬性值。
Color的線性插補表示每個ARGB值都會視為位元組,而插補只是數學運算。 如果至少其中一個 RGB 元件在起始值和結束值中都相同或接近相同,您就能從色彩插補取得最佳結果。
您通常需要使用間接屬性目標,才能將目標設為另一個物件子屬性,該物件是目標上的屬性值。 這是因為在 UI 元素中顯示色彩資訊的屬性很少實際上是 Color類型。 大部分是 Brush 類型,而不是 類型 Brush。 若要在 UI 元素上使用 ColorAnimation,您通常會以屬於子屬性值的 SolidColorBrushColor屬性為目標。 這的語法會顯示在一節的 XAML 範例中。 如需間接屬性目標和其他腳本動畫概念的詳細資訊,請參閱 分鏡腳本動畫 或 屬性路徑語法。
ColorAnimation 通常至少有一個 From、 By 或 To 屬性已設定,但絕不會全部設定三個屬性。
- 僅從: 動畫會從 From 屬性所指定的值進展到要產生動畫效果之屬性的基底值。
- From 和 To: 動畫會從 From 屬性所指定的值進展到 To 屬性所指定的值。
- 寄件者和依據: 動畫會從 From 屬性所指定的值進展到 From 和 By 屬性的總和所指定的值。
- 僅限: 動畫會從動畫屬性的基底值或先前動畫的輸出值進展到 To 屬性所指定的值。
- 僅限: 動畫會從要產生動畫效果的屬性基底值或先前動畫的輸出值,到該值和 By 屬性所指定的值總和。
ColorAnimation 的From、By和To屬性不是Color。 相反地,這些是 可為 Null 的 Color。 這些的預設值為 null,而不是未初始化的結構。 該 Null 值是動畫系統區分您尚未特別設定值的方式。 Visual C++ 元件延伸 (C++/CX) 沒有 Nullable 型別,所以改用 IReference。
建構函式
ColorAnimation() |
初始化 ColorAnimation 類別的新實例。 |
屬性
AutoReverse |
取得或設定值,其中該值指出時間軸是否會在完成向前反覆項目後反向播放。 (繼承來源 Timeline) |
BeginTime |
取得或設定這個 時間軸 應該開始的時間。 (繼承來源 Timeline) |
By |
取得或設定動畫變更其起始值所依據的總量。 |
ByProperty |
識別 By 相依性屬性。 |
Dispatcher |
一律會在Windows 應用程式 SDK應用程式中傳 |
DispatcherQueue |
|
Duration |
取得或設定這個時間表播放的時間長度 (不計算重複次數)。 (繼承來源 Timeline) |
EasingFunction |
取得或設定套用至這個動畫的 easing 函式。 |
EasingFunctionProperty |
識別 EasingFunction 相依性屬性。 |
EnableDependentAnimation |
取得或設定值,這個值會宣告是否應該允許考慮相依動畫的動畫屬性使用此動畫宣告。 |
EnableDependentAnimationProperty |
識別 EnableDependentAnimation 相依性屬性。 |
FillBehavior |
取得或設定值,這個值會指定動畫在到達使用期間結束時的行為。 (繼承來源 Timeline) |
From |
取得或設定此動畫的起始值。 |
FromProperty |
識別 From 相依性屬性。 |
RepeatBehavior |
取得或設定這個時間軸的重複行為。 (繼承來源 Timeline) |
SpeedRatio |
取得或設定相對於其父系的速率,此時會進行這個 時間軸。 (繼承來源 Timeline) |
To |
取得或設定此動畫的結束值。 |
ToProperty |
識別 To 相依性屬性。 |
方法
ClearValue(DependencyProperty) |
清除相依性屬性的本機值。 (繼承來源 DependencyObject) |
GetAnimationBaseValue(DependencyProperty) |
傳回為相依性屬性建立的任何基底值,如果動畫未使用中,則適用此屬性。 (繼承來源 DependencyObject) |
GetValue(DependencyProperty) |
從 DependencyObject傳回相依性屬性的目前有效值。 (繼承來源 DependencyObject) |
ReadLocalValue(DependencyProperty) |
如果已設定本機值,則傳回相依性屬性的本機值。 (繼承來源 DependencyObject) |
RegisterPropertyChangedCallback(DependencyProperty, DependencyPropertyChangedCallback) |
註冊通知函式,以接聽此DependencyObject實例上特定DependencyProperty的變更。 (繼承來源 DependencyObject) |
SetValue(DependencyProperty, Object) |
設定 DependencyObject上相依性屬性的本機值。 (繼承來源 DependencyObject) |
UnregisterPropertyChangedCallback(DependencyProperty, Int64) |
取消先前透過呼叫 RegisterPropertyChangedCallback註冊的變更通知。 (繼承來源 DependencyObject) |
事件
Completed |
發生于 Storyboard 物件已完成播放時。 (繼承來源 Timeline) |