Create GeometryKeyFrame.cs

This commit is contained in:
NaBian committed 2019-09-26 21:31:59 +08:00
1 parent 646f983228
commit a2e719925d
1 file changed
+54
@@ -0,0 +1,54 @@
using System;
using System.Windows;
using System.Windows.Media;
using System.Windows.Media.Animation;
public abstract class GeometryKeyFrame : Freezable, IKeyFrame
{
protected GeometryKeyFrame(Geometry value)
{
Value = value;
}
protected GeometryKeyFrame(Geometry value, KeyTime keyTime)
{
Value = value;
KeyTime = keyTime;
}
public static readonly DependencyProperty KeyTimeProperty = DependencyProperty.Register(
"KeyTime", typeof(KeyTime), typeof(GeometryKeyFrame), new PropertyMetadata(KeyTime.Uniform));
public KeyTime KeyTime
{
get => (KeyTime) GetValue(KeyTimeProperty);
set => SetValue(KeyTimeProperty, value);
}
object IKeyFrame.Value
{
get => Value;
set => Value = (Geometry)value;
}
public static readonly DependencyProperty ValueProperty = DependencyProperty.Register(
"Value", typeof(Geometry), typeof(GeometryKeyFrame), new PropertyMetadata(default(Geometry)));
public Geometry Value
{
get => (Geometry) GetValue(ValueProperty);
set => SetValue(ValueProperty, value);
}
public Geometry InterpolateValue(Geometry baseValue, double keyFrameProgress)
{
if (keyFrameProgress < 0.0 || keyFrameProgress > 1.0)
{
throw new ArgumentOutOfRangeException(nameof(keyFrameProgress));
}
return InterpolateValueCore(baseValue, keyFrameProgress);
}
protected abstract Geometry InterpolateValueCore(Geometry baseValue, double keyFrameProgress);
}