namespace Yw.WinFrmUI
{
///
/// 特效拓展类-对dev控件TransitionManager的封装
///
public static class AnimationHelper
{
///
/// 利用属性获取特效管理器
///
public static TransitionManager TransitionMgr
{
get
{
if (_transitionMgr == null)
{
lock (_locker)
{
if (_transitionMgr == null)
{
_transitionMgr = new TransitionManager();
}
}
}
return _transitionMgr;
}
}
private static TransitionManager _transitionMgr = null;// 定义一个静态变量来保存类的实例
private static readonly object _locker = new();// 定义一个标识确保线程同步
///
/// 创建滑行特效,四种效果—上下左右
///
/// 需要创建特效的控件
/// ePushEffectOptions 特效方向-上下左右
/// 时间间隔-默认3000
/// 是否显示等待-默认不显示
public static void CreateSlideFadeAnimation(this Control ctrl, ePushEffectOptions ani, int? frameInterVal = 3000, bool showWaitingIndicator = false)
{
TransitionMgr.ShowWaitingIndicator = showWaitingIndicator;
var slideFade = new SlideFadeTransition();
slideFade.Parameters.EffectOptions = (PushEffectOptions)((int)ani);
slideFade.Parameters.FrameInterval = frameInterVal;
var transition = new Transition();
transition.TransitionType = slideFade;
transition.Control = ctrl;
TransitionMgr.Transitions.Clear();
TransitionMgr.Transitions.Add(transition);
}
///
/// 创建推动特效,四种效果-上下左右
///
/// 需要创建特效的控件
/// ePushEffectOptions 特效方向-上下左右
/// 时间间隔-默认3000
/// 是否显示等待-默认不显示
public static void CreatePushAnimation(this Control ctrl, ePushEffectOptions ani, int? frameInterVal = 3000, bool showWaitingIndicator = false)
{
TransitionMgr.ShowWaitingIndicator = showWaitingIndicator;
var push = new PushTransition();
push.Parameters.EffectOptions = (PushEffectOptions)((int)ani);
push.Parameters.FrameInterval = frameInterVal;
var transition = new Transition();
transition.TransitionType = push;
transition.Control = ctrl;
TransitionMgr.Transitions.Clear();
TransitionMgr.Transitions.Add(transition);
}
///
/// 创建花斑特效
///
/// 需要创建特效的控件
/// 时间间隔-默认3000
/// 是否显示等待-默认不显示
public static void CreateDissolveAnimation(this Control ctrl, int? frameInterVal = 3000, bool showWaitingIndicator = false)
{
TransitionMgr.ShowWaitingIndicator = showWaitingIndicator;
var dissolve = new DissolveTransition();
dissolve.Parameters.FrameInterval = frameInterVal;
var transition = new Transition();
transition.TransitionType = dissolve;
transition.Control = ctrl;
TransitionMgr.Transitions.Clear();
TransitionMgr.Transitions.Add(transition);
}
///
/// 创建形状特效
///
/// 需要创建特效的控件
/// eShapeEffectOptions
/// 时间间隔-默认3000
/// 是否显示等待-默认不显示
public static void CreateShapeAnimation(this Control ctrl, eShapeEffectOptions ani, int? frameInterVal = 3000, bool showWaitingIndicator = false)
{
TransitionMgr.ShowWaitingIndicator = showWaitingIndicator;
var shape = new ShapeTransition();
shape.Parameters.FrameInterval = frameInterVal;
shape.Parameters.EffectOptions = (ShapeEffectOptions)((int)ani);
var transition = new Transition();
transition.TransitionType = shape;
transition.Control = ctrl;
TransitionMgr.Transitions.Clear();
TransitionMgr.Transitions.Add(transition);
}
///
/// 创建简单小特效
/// 需要创建特效的控件
/// 时间间隔-默认3000
/// 是否显示等待-默认不显示
public static void CreateFadeAnimation(this Control ctrl, int? frameInterVal = 3000, bool showWaitingIndicator = false)
{
TransitionMgr.ShowWaitingIndicator = showWaitingIndicator;
var fade = new FadeTransition();
fade.Parameters.FrameInterval = frameInterVal;
var transition = new Transition();
transition.TransitionType = fade;
transition.Control = ctrl;
TransitionMgr.Transitions.Clear();
TransitionMgr.Transitions.Add(transition);
}
///
/// 创建时钟特效
///
/// 需要创建特效的控件
/// eClockEffectOptions
/// 时间间隔-默认3000
/// 是否显示等待-默认不显示
public static void CreateClockAnimation(this Control ctrl, eClockEffectOptions ani, int? frameInterVal = 3000, bool showWaitingIndicator = false)
{
TransitionMgr.ShowWaitingIndicator = showWaitingIndicator;
var clock = new ClockTransition();
clock.Parameters.FrameInterval = frameInterVal;
clock.Parameters.EffectOptions = (ClockEffectOptions)((int)ani);
var transition = new Transition();
transition.TransitionType = clock;
transition.Control = ctrl;
TransitionMgr.Transitions.Clear();
TransitionMgr.Transitions.Add(transition);
}
///
/// 创建覆盖特效
///
/// 需要创建特效的控件
/// eCoverEffectOptions
/// 时间间隔-默认3000
/// 是否显示等待-默认不显示
public static void CreateCoverAnimation(this Control ctrl, eCoverEffectOptions ani, int? frameInterVal = 3000, bool showWaitingIndicator = false)
{
TransitionMgr.ShowWaitingIndicator = showWaitingIndicator;
var cover = new CoverTransition();
cover.Parameters.FrameInterval = frameInterVal;
cover.Parameters.EffectOptions = (CoverEffectOptions)((int)ani);
var transition = new Transition();
transition.TransitionType = cover;
transition.Control = ctrl;
TransitionMgr.Transitions.Clear();
TransitionMgr.Transitions.Add(transition);
}
///
/// 创建Comb特效
/// 需要创建特效的控件
/// 时间间隔-默认3000
/// 是否显示等待-默认不显示
public static void CreateCombAnimation(this Control ctrl, int? frameInterVal = 3000, bool showWaitingIndicator = false)
{
TransitionMgr.ShowWaitingIndicator = showWaitingIndicator;
var comb = new CombTransition();
comb.Parameters.FrameInterval = frameInterVal;
var transition = new Transition();
transition.TransitionType = comb;
transition.Control = ctrl;
TransitionMgr.Transitions.Clear();
TransitionMgr.Transitions.Add(transition);
}
///
/// 开始特效
///
///
public static void StartAnimation(this Control ctrl)
{
TransitionMgr.StartTransition(ctrl);
}
///
/// 结束特效
///
///
public static void EndAnimation(this Control ctrl)
{
TransitionMgr.EndTransition();
}
}
}