MSDN Community | Windows API Reference
DirectAnimation is a multimedia animation library for Microsoft Windows that allows developers to create sophisticated animated visual effects and user interfaces. It provides a high-level abstraction over the underlying graphics and timing mechanisms, making it easier to manage complex animation sequences.
DirectAnimation offers:
Animations are organized into groups, which can be played, paused, or stopped collectively. This allows for synchronized playback of multiple animated elements.
Key interfaces:
IAnimationGroupIndividual animations that target specific properties of objects. These can be simple value transitions, path-based animations, or event-driven animations.
Key interfaces:
IAnimationElementIAnimationPathITimingFunctionDirectAnimation can animate a wide range of properties, including position, rotation, scale, color, opacity, and custom user-defined properties.
IDirectAnimationThe primary interface for creating and managing animation groups.
| Method | Description |
|---|---|
CreateAnimationGroup |
Creates a new animation group. |
GetAnimationGroup |
Retrieves an existing animation group by its identifier. |
Cleanup |
Releases all resources held by DirectAnimation. |
IAnimationGroupRepresents a collection of animations that can be controlled as a single unit.
| Method | Description |
|---|---|
AddAnimationElement |
Adds an animation element to the group. |
Play |
Starts playback of the animation group. |
Pause |
Pauses the animation group. |
Stop |
Stops the animation group. |
SetLoopCount |
Sets the number of times the group should loop. |
SetCompletionHandler |
Registers a callback function to be executed when the group completes. |
IAnimationElementDefines a single animation for a specific property.
| Method | Description |
|---|---|
SetPath |
Specifies the animation path. |
SetDuration |
Sets the duration of the animation. |
SetTimingFunction |
Applies a timing function to control the animation's easing. |
SetStartValue |
Defines the initial value for the animation. |
SetEndValue |
Defines the final value for the animation. |
This is a conceptual example demonstrating how DirectAnimation might be used in C++.
#include <d3d9.h> // Assuming DirectX 9 context
#include <DirectAnimation.h>
// Assume a DirectAnimation object (pDAnimation) and a target object (pTargetObject) exist
// Create an animation group
IAnimationGroup* pAnimGroup;
pDAnimation->CreateAnimationGroup(&pAnimGroup);
// Create an animation element for a position property
IAnimationElement* pPosElement;
pDAnimation->CreateAnimationElement(&pPosElement);
// Define an animation path (e.g., linear interpolation)
IAnimationPath* pPath;
pDAnimation->CreateAnimationPath(&pPath);
pPath->SetType(ANIMATION_PATH_LINEAR);
pPath->AddKeyframe(0.0f, 0.0f); // Start at time 0, value 0
pPath->AddKeyframe(1.0f, 100.0f); // End at time 1, value 100
// Set the path and duration for the element
pPosElement->SetPath(pPath);
pPosElement->SetDuration(1.0f); // 1 second duration
// Add the element to the group
pAnimGroup->AddAnimationElement(pPosElement, TARGET_PROPERTY_POSITION_X); // Assuming a constant for X position
// Set loop count and start the animation
pAnimGroup->SetLoopCount(-1); // Loop indefinitely
pAnimGroup->Play();
// ... animation loop to update and render ...
// Release interfaces when done
pAnimGroup->Release();
pPosElement->Release();
pPath->Release();