Files
HandyControl/Net40/HandyControl_Net40/Interactivity/TransitionEffect.cs
T
2019-01-21 11:12:38 +08:00

56 lines
1.7 KiB
C#

using System.Windows;
using System.Windows.Media;
using System.Windows.Media.Effects;
namespace HandyControl.Interactivity
{
public abstract class TransitionEffect : ShaderEffect
{
// Fields
public static readonly DependencyProperty InputProperty =
RegisterPixelShaderSamplerProperty("Input", typeof(TransitionEffect), 0, SamplingMode.NearestNeighbor);
public static readonly DependencyProperty OldImageProperty =
RegisterPixelShaderSamplerProperty("OldImage", typeof(TransitionEffect), 1, SamplingMode.NearestNeighbor);
public static readonly DependencyProperty ProgressProperty = DependencyProperty.Register("Progress",
typeof(double), typeof(TransitionEffect), new PropertyMetadata(0.0, PixelShaderConstantCallback(0)));
// Methods
protected TransitionEffect()
{
UpdateShaderValue(InputProperty);
UpdateShaderValue(OldImageProperty);
UpdateShaderValue(ProgressProperty);
}
// Properties
public Brush Input
{
get =>
(Brush) GetValue(InputProperty);
set => SetValue(InputProperty, value);
}
public Brush OldImage
{
get =>
(Brush) GetValue(OldImageProperty);
set => SetValue(OldImageProperty, value);
}
public double Progress
{
get =>
(double) GetValue(ProgressProperty);
set => SetValue(ProgressProperty, value);
}
public new TransitionEffect CloneCurrentValue()
{
return (TransitionEffect) base.CloneCurrentValue();
}
protected abstract TransitionEffect DeepCopy();
}
}