QuaternionKeyFrameAnimation Class
Definition
A time-based animation that targets the Orientation property with one or more key frames.
The QuaternionKeyFrameAnimation class is one of the supported types of KeyFrameAnimation s that is used to animate the Orientation property on a Visual. Quaternions are a useful and sometimes simpler way to think about rotations – Quaternions take the shortest path between angles and avoid issues like Gimbal Lock that rotation angle/axis and rotation matrices run into. A Quaternion is made up of two components: a scalar and vector part.
Equivalent WinUI class: Microsoft.UI.Composition.QuaternionKeyFrameAnimation.
public ref class QuaternionKeyFrameAnimation sealed : KeyFrameAnimation
/// [Windows.Foundation.Metadata.ContractVersion(Windows.Foundation.UniversalApiContract, 131072)]
/// [Windows.Foundation.Metadata.DualApiPartition(version=167772161)]
/// [Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
/// [Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
/// [Windows.Foundation.Metadata.WebHostHidden]
class QuaternionKeyFrameAnimation final : KeyFrameAnimation
/// [Windows.Foundation.Metadata.ContractVersion(Windows.Foundation.UniversalApiContract, 131072)]
/// [Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
/// [Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
/// [Windows.Foundation.Metadata.WebHostHidden]
class QuaternionKeyFrameAnimation final : KeyFrameAnimation
/// [Windows.Foundation.Metadata.ContractVersion(Windows.Foundation.UniversalApiContract, 131072)]
/// [Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
/// [Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
/// [Windows.Foundation.Metadata.WebHostHidden]
/// [Windows.Foundation.Metadata.DualApiPartition(version=167772164)]
class QuaternionKeyFrameAnimation final : KeyFrameAnimation
[Windows.Foundation.Metadata.ContractVersion(typeof(Windows.Foundation.UniversalApiContract), 131072)]
[Windows.Foundation.Metadata.DualApiPartition(version=167772161)]
[Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
[Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
[Windows.Foundation.Metadata.WebHostHidden]
public sealed class QuaternionKeyFrameAnimation : KeyFrameAnimation
[Windows.Foundation.Metadata.ContractVersion(typeof(Windows.Foundation.UniversalApiContract), 131072)]
[Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
[Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
[Windows.Foundation.Metadata.WebHostHidden]
public sealed class QuaternionKeyFrameAnimation : KeyFrameAnimation
[Windows.Foundation.Metadata.ContractVersion(typeof(Windows.Foundation.UniversalApiContract), 131072)]
[Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
[Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
[Windows.Foundation.Metadata.WebHostHidden]
[Windows.Foundation.Metadata.DualApiPartition(version=167772164)]
public sealed class QuaternionKeyFrameAnimation : KeyFrameAnimation
Public NotInheritable Class QuaternionKeyFrameAnimation
Inherits KeyFrameAnimation
- Inheritance
- Attributes
Windows 10 requirements
Device family |
Windows 10 (introduced in 10.0.10586.0)
|
API contract |
Windows.Foundation.UniversalApiContract (introduced in v2.0)
|
Examples
void QuaternionAnimation(SpriteVisual visual)
{
// Create the QuaternionKeyFrameAnimation
var quaternionKFA = _compositor.CreateQuaternionKeyFrameAnimation();
// Create a Quaternion that represents a 45 degree rotation around X Axis
Quaternion quaternion = new Quaternion(0.380f, 0f, 0.0f, 0.92f);
// Insert the Quaternion into the KeyFrame
quaternionKFA.InsertKeyFrame(1.0f, quaternion);
quaternionKFA.Duration = TimeSpan.FromSeconds(1);
// Attach to the Orientation property of Visual
visual.StartAnimation("Orientation", quaternionKFA);
}
Remarks
An animation is associated with an object's property by calling CompositionObject.StartAnimation and specifying the property name and the animation. See the remarks section of CompositionObject.StartAnimation for a list of animatable properties.
A Quaternion is made up of two distinguishable parts: A vector and scalar component. When using with KeyFrame Animations, the Quaternion can be defined by the notation of System.Numerics of 4 floats or a Vector3 and a scalar. System.Numerics provides constructors for either of these notations.
When translating a rotation into a Quaternion, you can utilize System.Numerics Quaternion helper functions that allow you to create Quaternions out of an Axis/Angle combo, Rotation Matrix or Yaw/Pitch/Roll. In the example above, the same Quaternion could be constructed from the below helper:
Quaternion quaternion = Quaternion.CreateFromAxisAngle(new Vector3(1.0f, 0.0f, 0.0f), 0.78f);
Properties
Comment |
A string to associate with the CompositionObject. Equivalent WinUI property: Microsoft.UI.Composition.CompositionObject.Comment. (Inherited from CompositionObject) |
Compositor |
The Compositor used to create this CompositionObject. Equivalent WinUI property: Microsoft.UI.Composition.CompositionObject.Compositor. (Inherited from CompositionObject) |
DelayBehavior |
The delay behavior of the key frame animation. Equivalent WinUI property: Microsoft.UI.Composition.KeyFrameAnimation.DelayBehavior. (Inherited from KeyFrameAnimation) |
DelayTime |
Delay before the animation starts after CompositionObject.StartAnimation is called. Equivalent WinUI property: Microsoft.UI.Composition.KeyFrameAnimation.DelayTime. (Inherited from KeyFrameAnimation) |
Direction |
The direction the animation is playing. The Direction property allows you to drive your animation from start to end or end to start or alternate between start and end or end to start if animation has an IterationCount greater than one. This gives an easy way for customizing animation definitions. Equivalent WinUI property: Microsoft.UI.Composition.KeyFrameAnimation.Direction. (Inherited from KeyFrameAnimation) |
Dispatcher |
The dispatcher for the CompositionObject. (Inherited from CompositionObject) |
DispatcherQueue |
Gets the DispatcherQueue for the CompostionObject. Equivalent WinUI property: Microsoft.UI.Composition.CompositionObject.DispatcherQueue. (Inherited from CompositionObject) |
Duration |
The duration of the animation. Equivalent WinUI property: Microsoft.UI.Composition.KeyFrameAnimation.Duration. (Inherited from KeyFrameAnimation) |
ImplicitAnimations |
The collection of implicit animations attached to this object. Equivalent WinUI property: Microsoft.UI.Composition.CompositionObject.ImplicitAnimations. (Inherited from CompositionObject) |
InitialValueExpressions |
Gets the initial values for the animation. Equivalent WinUI property: Microsoft.UI.Composition.CompositionAnimation.InitialValueExpressions. (Inherited from CompositionAnimation) |
IterationBehavior |
The iteration behavior for the key frame animation. Equivalent WinUI property: Microsoft.UI.Composition.KeyFrameAnimation.IterationBehavior. (Inherited from KeyFrameAnimation) |
IterationCount |
The number of times to repeat the key frame animation. Equivalent WinUI property: Microsoft.UI.Composition.KeyFrameAnimation.IterationCount. (Inherited from KeyFrameAnimation) |
KeyFrameCount |
The number of key frames in the KeyFrameAnimation. Equivalent WinUI property: Microsoft.UI.Composition.KeyFrameAnimation.KeyFrameCount. (Inherited from KeyFrameAnimation) |
Properties |
The collection of properties associated with the CompositionObject. Equivalent WinUI property: Microsoft.UI.Composition.CompositionObject.Properties. (Inherited from CompositionObject) |
StopBehavior |
Specifies how to set the property value when StopAnimation is called. Equivalent WinUI property: Microsoft.UI.Composition.KeyFrameAnimation.StopBehavior. (Inherited from KeyFrameAnimation) |
Target |
The target of the animation. Equivalent WinUI property: Microsoft.UI.Composition.CompositionAnimation.Target. (Inherited from CompositionAnimation) |