Поделиться через


DoubleAnimation Класс

Определение

Анимирует значение свойства Double между двумя целевыми значениями, используя линейную интерполяцию для указанной длительности.

public ref class DoubleAnimation sealed : Timeline
/// [Windows.Foundation.Metadata.Activatable(65536, Windows.Foundation.UniversalApiContract)]
/// [Windows.Foundation.Metadata.ContractVersion(Windows.Foundation.UniversalApiContract, 65536)]
/// [Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
/// [Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
class DoubleAnimation final : Timeline
/// [Windows.Foundation.Metadata.ContractVersion(Windows.Foundation.UniversalApiContract, 65536)]
/// [Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
/// [Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
/// [Windows.Foundation.Metadata.Activatable(65536, "Windows.Foundation.UniversalApiContract")]
class DoubleAnimation final : Timeline
[Windows.Foundation.Metadata.Activatable(65536, typeof(Windows.Foundation.UniversalApiContract))]
[Windows.Foundation.Metadata.ContractVersion(typeof(Windows.Foundation.UniversalApiContract), 65536)]
[Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
[Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
public sealed class DoubleAnimation : Timeline
[Windows.Foundation.Metadata.ContractVersion(typeof(Windows.Foundation.UniversalApiContract), 65536)]
[Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
[Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
[Windows.Foundation.Metadata.Activatable(65536, "Windows.Foundation.UniversalApiContract")]
public sealed class DoubleAnimation : Timeline
Public NotInheritable Class DoubleAnimation
Inherits Timeline
<DoubleAnimation />
Наследование
Object Platform::Object IInspectable DependencyObject Timeline DoubleAnimation
Атрибуты

Требования к Windows

Семейство устройств
Windows 10 (появилось в 10.0.10240.0)
API contract
Windows.Foundation.UniversalApiContract (появилось в v1.0)

Примеры

В следующем примере показано, как использовать DoubleAnimation для создания прямоугольника, который исчезает в поле зрения после загрузки.

<StackPanel>
    <StackPanel.Resources>
        <Storyboard x:Name="myStoryboard">
            <DoubleAnimation
          Storyboard.TargetName="MyAnimatedRectangle"
          Storyboard.TargetProperty="Opacity"
          From="1.0" To="0.0" Duration="0:0:3"
          AutoReverse="True" RepeatBehavior="Forever" />
        </Storyboard>
    </StackPanel.Resources>

    <Rectangle Loaded="Start_Animation" x:Name="MyAnimatedRectangle"
     Width="100" Height="100" Fill="Blue" />

</StackPanel>
// Start the animation when the object loads
private void Start_Animation(object sender, RoutedEventArgs e)
{
    myStoryboard.Begin();
}
' Start the animation when the object loads
Private Sub Start_Animation(ByVal sender As Object, ByVal e As EventArgs)
    myStoryboard.Begin()
End Sub
<Canvas>
    <Canvas.Resources>
        <Storyboard x:Name="myStoryboard">

            <!-- Animate the TranslateTransform's X property
           from 0 to 350, then 50, then 200 over 10 seconds. -->
            <DoubleAnimationUsingKeyFrames
       Storyboard.TargetName="MyAnimatedTranslateTransform"
       Storyboard.TargetProperty="X"
       Duration="0:0:10" EnableDependentAnimation="True">

                <!-- 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>
    </Canvas.Resources>

    <Rectangle PointerPressed="Pointer_Clicked" Fill="Blue"
 Width="50" Height="50">
        <Rectangle.RenderTransform>
            <TranslateTransform x:Name="MyAnimatedTranslateTransform" />
        </Rectangle.RenderTransform>
    </Rectangle>

</Canvas>
// Start the animation when the object loads
private void Start_Animation(object sender, RoutedEventArgs e)
{
    myStoryboard.Begin();
}
' Start the animation when the object loads
Private Sub Start_Animation(ByVal sender As Object, ByVal e As EventArgs)
    myStoryboard.Begin()
End Sub

Комментарии

Используйте DoubleAnimation, чтобы анимировать значение свойства любого свойства зависимостей типа Double.

Иногда требуется использовать непрямую нацеливание на свойства, чтобы нацелить подсвойства другого объекта, который является значением свойства в целевом объекте. Например, чтобы анимировать компонент X renderTransformэлемента UIElement, необходимо ссылаться на некоторые промежуточные значения объекта-свойства, пока последний шаг в пути косвенного свойства не будет действительно значением Double , как в случае с TranslateTransform.X. Правильная строка, используемая для Storyboard.TargetProperty в этом примере: "(UIElement.RenderTransform). (TranslateTransform.x)". Дополнительные сведения о непрямом нацеливание на свойства и другие понятия раскадрованной анимации см. в разделе Раскадрованная анимация.

DoubleAnimation обычно имеет по крайней мере одно из свойств From, By или To , но никогда не все три.

  • Только из: Анимация выполняется от значения, заданного свойством From , до базового значения анимируемого свойства.
  • От и До: Анимация переходит от значения, указанного свойством From , до значения, указанного свойством To .
  • From и By: Анимация переходит от значения, заданного свойством From , до значения, заданного суммой свойств From и By .
  • Только для: Анимация выполняется из базового значения анимированного свойства или выходного значения предыдущей анимации до значения, указанного свойством To .
  • Только по: Анимация выполняется от базового значения анимируемого свойства или выходного значения предыдущей анимации до суммы этого значения и значения, указанного свойством By .

Вы не можете анимировать значения X и Yточки с помощью DoubleAnimation, так как эти свойства не являются свойствами зависимостей (Point — это структура и не может иметь свойства зависимостей).) Вместо этого используйте PointAnimation для анимации свойств зависимостей, имеющих значение Point .

Вы также не можете использовать DoubleAnimation для анимации значений int или байтов . Вместо этого вам придется использовать ObjectAnimationUsingKeyFrames, что не обеспечивает интерполяцию, поэтому для получения достаточно плавной анимации может потребоваться определить несколько ключевых кадров. Существует не так много свойств зависимостей, связанных с пользовательским интерфейсом, которые используют значения int или байты , поэтому этот сценарий не должен быть распространенным, кроме пользовательских свойств.

Свойства From, By или To объекта DoubleAnimation не являются строго double. Вместо этого они имеют значение NULL для Double. Значение по умолчанию для них равно NULL, а не 0. Это значение NULL — это то, как система анимации различает, что вы не задали конкретное значение. Расширения (C++/CX) компонента Visual C++ не имеют типа Nullable, поэтому взамен используется IReference.

Конструкторы

DoubleAnimation()

Инициализирует новый экземпляр класса DoubleAnimation .

Свойства

AutoReverse

Получает или задает значение, указывающее, воспроизводится ли временная шкала в обратном направлении после завершения прямой итерации.

(Унаследовано от Timeline)
BeginTime

Возвращает или задает время начала этой временной шкалы .

(Унаследовано от Timeline)
By

Получает или задает общее значение, с помощью которого изменяется начальное значение анимации.

ByProperty

Определяет свойство зависимостей By .

Dispatcher

Возвращает объект CoreDispatcher , с которым связан этот объект. CoreDispatcher представляет собой средство, которое может получить доступ к DependencyObject в потоке пользовательского интерфейса, даже если код инициируется потоком, не относящегося к пользовательскому интерфейсу.

(Унаследовано от DependencyObject)
Duration

Получает или задает продолжительность воспроизведения шкалы времени без учета повторов.

(Унаследовано от Timeline)
EasingFunction

Получает или задает функцию реалистичной анимации, применяемую к данной анимации.

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)

Регистрирует функцию уведомления для прослушивания изменений определенного DependencyProperty в этом экземпляре DependencyObject .

(Унаследовано от DependencyObject)
SetValue(DependencyProperty, Object)

Задает локальное значение свойства зависимостей для Объекта DependencyObject.

(Унаследовано от DependencyObject)
UnregisterPropertyChangedCallback(DependencyProperty, Int64)

Отменяет уведомление об изменениях, которое было ранее зарегистрировано путем вызова Метода RegisterPropertyChangedCallback.

(Унаследовано от DependencyObject)

События

Completed

Происходит после завершения воспроизведения объекта Storyboard .

(Унаследовано от Timeline)

Применяется к

См. также раздел