ScaleAnimation class

Applies to Windows only

Provides methods that enable you to retrieve the parameters for a scaling (growing or shrinking) animation.

Syntax


public ref class ScaleAnimation sealed : IPropertyAnimation

Attributes

[DualApiPartition()]
[MarshalingBehavior(Agile)]
[Version(0x06020000)]

Members

The ScaleAnimation class has these types of members:

Methods

The ScaleAnimation class inherits methods from the Object class (C#/VB/C++).

Properties

The ScaleAnimation class has these properties.

PropertyAccess typeDescription

Control1

Read-onlyGets the location of the first control point for the cubic Bézier curve that describes how the scale should animate over time.

Control2

Read-onlyGets the location of the second control point for the cubic Bézier curve that describes how the scale should animate over time.

Delay

Read-onlyGets the amount of time between when the scale animation is instructed to begin and when that animation actually begins to draw.

Duration

Read-onlyGets the amount of time over which the scale animation should be performed. This does not include the delay.

FinalScaleX

Read-onlyGets the final horizontal scale factor for the object.

FinalScaleY

Read-onlyGets the final vertical scale factor for the object.

InitialScaleX

Read-onlyGets the initial horizontal scale factor for the object.

InitialScaleY

Read-onlyGets the initial vertical scale factor for the object.

NormalizedOrigin

Read-onlyGets the center point for the scaling animation, expressed as a point relative to the object's normal size.

Type

Read-onlyGets the type of animation represented by this object.

 

Remarks

The scale is a factor that is applied to the object in either the x- or y- direction. A scale value of 1.0 represents no scaling, less than 1 represents shrinking, and greater than 1 represents magnification.

The origin point of a scale represents the center point around which the scaling should take place. This point remains fixed throughout the animation; it does not animate. The origin is stated as a fraction of the object's size. For example, a NormalizedOrigin.X of 0.25 represents a point 25% of the way from the left edge to the right edge of the object. If the object is 100 pixels wide, then a NormalizedOrigin.X represents a point 25 pixels from the left edge of the object.

Note  The sense of left and right are flipped on right-to-left (RTL) systems.

As an example, consider an object whose coordinate rectangle is (100, 150, 200, 300), expressed in (left, top, right, bottom) format. Suppose that the interpolated x-scale is 0.4, the interpolated y-scale is 2.0, the x-origin is 0.25, and the y-origin is 0.80.

First, convert the normalized origin values to pixels. The width of the object is 100 pixels and the x-origin is given as 0.25, which results in an x-origin of 25 pixels from the left of the object. Since the object's left coordinate is 100, the x-coordinate of the origin is 125.

Similarly, the height of the object is 150 pixels and the y-origin is 0.80, which results in a y-origin of 120 pixels from the top of the object. Since the object's top coordinate is 150, the y-coordinate of the origin is 245.

To apply the scale transform, we first translate the object by the negative of the origin, moving it to (-25, -95, 75, 55). Next, we multiply the left and right coordinates by the x-scale and the top and bottom coordinates by the y-scale, which results in (-10, -190, 30, 110). Finally, we translate the object by the origin, which results in (115, 55, 155, 300).

The InitialScaleX and InitialScaleY properties are guaranteed to be either both set or both not set. If they are not set, then the current object scale should be used as the initial value of the animation.

Examples

To obtain an instance of the ScaleAnimation class, you first obtain the collection of animations in the animation description, and then walk that array of animations to find any that are of type scale. The following examples shows this process. The effect and target parameters are assumed to have been previously assigned.



var animationDescription = new Windows.UI.Core.AnimationMetrics.AnimationDescription(effect, target);

var animations = animationDescription.animations;
for (var i = 0; i < animations.size; i++) {
    var animation = animations[i];

    switch (animation.type) {
        case animationMetrics.PropertyAnimationType.scale:
            // Retrieve scale animation metrics
            break;
        case animationMetrics.PropertyAnimationType.translation:
            // Retrieve translation animation metrics
            break;
        case animationMetrics.PropertyAnimationType.opacity:
            
            // Retrieve scale animation metrics
            break;
    }
}

The following example shows the C# version of the same code.



using Windows.UI.Core.AnimationMetrics;

AnimationDescription animationDescription = new AnimationDescription(effect, target);
foreach (var animation in animationDescription.Animations)
{
    switch (animation.Type)
    {
        case PropertyAnimationType.Scale:
            {
                ScaleAnimation scale = animation as ScaleAnimation;
                // Retrieve scale animation metrics.
            }
            break;
        case PropertyAnimationType.Translation:
            {
                TranslationAnimation scale = animation as TranslationAnimation;
                // Retrieve translation animation metrics.
            }
            break;
        case PropertyAnimationType.Opacity:
            {
                OpacityAnimation opacity = animation as OpacityAnimation;
                // Retrieve opacity animation metrics.
            }
            break;
    }
}

Requirements

Minimum supported client

Windows 8 [Windows Store apps, desktop apps]

Minimum supported server

Windows Server 2012 [Windows Store apps, desktop apps]

Minimum supported phone

None supported

Namespace

Windows.UI.Core.AnimationMetrics
Windows::UI::Core::AnimationMetrics [C++]

Metadata

Windows.winmd

See also

Animation metrics sample
AnimationDescription

 

 

Show:
© 2014 Microsoft