語言

ColorAnimation 類別

定義

在指定持續時間內,透過線性插值來動畫兩個目標值之間的 Color 屬性值。

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 .../>
繼承
Object Platform::Object IInspectable DependencyObject 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 的相依屬性的屬性值。

色彩的線性插 值意味著每個ARGB 值都被視為一個位元組,插值僅為數學運算。 如果起始值和結束值至少有一個 RGB 成分相同或接近,色彩插值效果會最好。

通常你需要使用間接屬性目標來鎖定另一個物件的子屬性,該子屬性是該物件屬性在目標上的價值。 這是因為在 UI 元素中顯示顏色資訊的屬性中,實際上很少有屬性是 Color。 大多數是用筆刷代替字 體。 要在 UI 元素上使用 ColorAnimation,通常你會鎖定 SolidColorBrush 的 Color 屬性,也就是子屬性值。 此語法可在 XAML 範例的「範例」部分展示。 欲了解更多關於間接屬性目標及其他分鏡動畫概念的資訊,請參閱 分鏡動畫 或 屬性路徑語法。

ColorAnimation 通常至少設定一個 From、 By 或 To 屬性,但不會同時具備三個屬性。

  • 僅來自: 動畫會從 From 屬性指定的值進展到被動畫屬性的基值。
  • 發件與收件人: 動畫會從 From 屬性指定的值進展到 To 屬性指定的值。
  • 作者與作者: 動畫會從 From 屬性指定的值進展到由 From 屬性與 By 屬性總和所指定的值。
  • 只給: 動畫會從被動畫屬性的基底值或先前動畫的輸出值,逐步推進到 To 屬性指定的值。
  • 僅由: 動畫會從被動畫屬性的基值或先前動畫的輸出值,逐步累積到該值與 By 屬性指定的值之總和。

ColorAnimation 的 From、 By 和 To 屬性並不嚴格來說是 顏色。 取而代之的是顏色的 Nullable。 這些的預設值為 null,而非未初始化的結構。 這個 空 值就是動畫系統區分你沒有特別設定值的方式。 C++ 沒有 Nullable 型別,所以改用 IReference 。

建構函式

名稱 Description
ColorAnimation()

初始化 ColorAnimation 類別的新實例。

屬性

名稱 Description
AutoReverse

取得或設定一個值,指示時間軸在完成正向迭代後是否會反向播放。

(繼承來源 Timeline)
BeginTime

取得或設定此 時間軸 應開始的時間。

(繼承來源 Timeline)
By

取得或設定動畫起始值變動的總量。

ByProperty

識別「 By 相依性」特性。

Dispatcher

它總是在 Windows 應用程式 SDK 應用程式中回傳 null 。 改用 DispatcherQueue 。

(繼承來源 DependencyObject)
DispatcherQueue

得到 DispatcherQueue 這個物件所關聯的那個。 代表 DispatcherQueue 一個功能,即使程式碼是由非 UI 執行緒發起,也能存取 UI DependencyObject 執行緒。

(繼承來源 DependencyObject)
Duration

取得或設定此時間軸播放的時間長度,不計重複次數。

(繼承來源 Timeline)
EasingFunction

取得或設定對此動畫套用的緩和函數。

EasingFunctionProperty

識別 EasingFunction 依賴性質。

EnableDependentAnimation

取得或設定一個值,宣告是否應允許被視為相依動畫的動畫屬性使用此動畫宣告。

EnableDependentAnimationProperty

識別 EnableDependentAnimation 相依屬性。

FillBehavior

取得或設定一個值,指定動畫在達到有效期間結束後的行為。

(繼承來源 Timeline)
From

取得或設定動畫的起始值。

FromProperty

識別 From 相依屬性。

RepeatBehavior

他會觸發或設定這個時間線重複的行為。

(繼承來源 Timeline)
SpeedRatio

取得或設定相對於父節點的速率,該 時間軸中時間的進展。

(繼承來源 Timeline)
To

取得或設定動畫的結尾值。

ToProperty

識別 To 依存性質。

方法

名稱 Description
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)

事件

名稱 Description
Completed

當 分鏡 物件完成播放時會發生。

(繼承來源 Timeline)

適用於

另請參閱