Creates a modifiable clone of the Freezable, making deep copies of the object's values. When copying the object's dependency properties, this method copies expressions (which might no longer resolve) but not animations or their current values. (Inherited from Freezable.)

Coerces the value of the specified dependency property. This is accomplished by invoking any CoerceValueCallback function specified in property metadata for the dependency property as it exists on the calling DependencyObject. (Inherited from DependencyObject.)

Ensures that the Freezable is being accessed from a valid thread. Inheritors of Freezable must call this method at the beginning of any API that reads data members that are not dependency properties. (Inherited from Freezable.)

Raises the Changed event for the Freezable and invokes its OnChanged method. Classes that derive from Freezable should call this method at the end of any API that modifies class members that are not stored as dependency properties. (Inherited from Freezable.)

Verifies that the Freezable is not frozen and that it is being accessed from a valid threading context. Freezable inheritors should call this method at the beginning of any API that writes to data members that are not dependency properties. (Inherited from Freezable.)

A key frame defines a segment of the RectAnimationUsingKeyFrames to which it belongs. Each key frame has a target Value and a KeyTime. The KeyTime specifies the time at which the key frame's Value should be reached. A key frame animates from the target value of the previous key frame to its own target value. It starts when the previous key frame ends and ends when its own key time is reached.

During the first two seconds, uses an instance of the LinearRectKeyFrame class to animate a gradual change in the position, width, and height of a rectangle. Linear key frames like LinearRectKeyFrame create a smooth linear transition between values.

During the end of the next half second, uses an instance of the DiscreteRectKeyFrame class to suddenly decrease the height of the rectangle. Discrete key frames like DiscreteRectKeyFrame create sudden changes between values, that is, the decrease in height occurs quickly and is not subtle.

During the final two seconds, uses an instance of the SplineRectKeyFrame class to change the rectangle back to its original size and position. Spline key frames like SplineRectKeyFrame create a variable transition between values according to the values of the KeySpline property. In this example, the change begins slowly and speeds up exponentially toward the end of the time segment.

<Pagexmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"Title="ThicknessAnimationUsingKeyFrames Example"><StackPanelOrientation="Vertical"HorizontalAlignment="Center"><PathStroke="Black"StrokeThickness="1"Fill="LemonChiffon"><Path.Data><RectangleGeometryx:Name="myRectangleGeometry"Rect="0,200,100,100"/></Path.Data><Path.Triggers><EventTriggerRoutedEvent="Path.Loaded"><BeginStoryboard><Storyboard><!-- Animate the Rect property of the RectangleGeometry which causes the
rectangle to animate its position as well as its width and height. --><RectAnimationUsingKeyFramesStoryboard.TargetName="myRectangleGeometry"Storyboard.TargetProperty="Rect"Duration="0:0:6"FillBehavior="HoldEnd"RepeatBehavior="Forever"><!-- Animate position, width, and height in first 2 seconds. LinearRectKeyFrame creates
a smooth, linear animation between values. --><LinearRectKeyFrameValue="600,50,200,50"KeyTime="0:0:2"/><!-- In the next half second, change height to 10. DiscreteRectKeyFrame creates a
sudden "jump" between values. --><DiscreteRectKeyFrameValue="600,50,200,10"KeyTime="0:0:2.5"/><!-- In the final 2 seconds of the animation, go back to the starting position, width, and height.
Spline key frames like SplineRectKeyFrame 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.--><SplineRectKeyFrameValue="0,200,100,100"KeyTime="0:0:4.5"KeySpline="0.6,0.0 0.9,0.00"/></RectAnimationUsingKeyFrames></Storyboard></BeginStoryboard></EventTrigger></Path.Triggers></Path></StackPanel></Page>