namespace Yw.WinFrmUI
|
{
|
/// <summary>
|
/// 特效拓展类-对dev控件TransitionManager的封装
|
/// </summary>
|
public static class AnimationHelper
|
{
|
|
/// <summary>
|
/// 利用属性获取特效管理器
|
/// </summary>
|
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();// 定义一个标识确保线程同步
|
|
/// <summary>
|
/// 创建滑行特效,四种效果—上下左右
|
/// </summary>
|
/// <param name="ctrl">需要创建特效的控件</param>
|
/// <param name="ani">ePushEffectOptions 特效方向-上下左右</param>
|
/// <param name="frameInterVal">时间间隔-默认3000</param>
|
/// <param name="showWaitingIndicator">是否显示等待-默认不显示</param>
|
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);
|
}
|
|
/// <summary>
|
/// 创建推动特效,四种效果-上下左右
|
/// </summary>
|
/// <param name="ctrl">需要创建特效的控件</param>
|
/// <param name="ani">ePushEffectOptions 特效方向-上下左右</param>
|
/// <param name="frameInterVal">时间间隔-默认3000</param>
|
/// <param name="showWaitingIndicator">是否显示等待-默认不显示</param>
|
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);
|
}
|
|
/// <summary>
|
/// 创建花斑特效
|
/// </summary>
|
/// <param name="ctrl">需要创建特效的控件</param>
|
/// <param name="frameInterVal">时间间隔-默认3000</param>
|
/// <param name="showWaitingIndicator">是否显示等待-默认不显示</param>
|
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);
|
}
|
|
/// <summary>
|
/// 创建形状特效
|
/// </summary>
|
/// <param name="ctrl">需要创建特效的控件</param>
|
/// <param name="ani">eShapeEffectOptions</param>
|
/// <param name="frameInterVal">时间间隔-默认3000</param>
|
/// <param name="showWaitingIndicator">是否显示等待-默认不显示</param>
|
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);
|
}
|
|
/// <summary>
|
/// 创建简单小特效
|
/// <param name="ctrl">需要创建特效的控件</param>
|
/// <param name="frameInterVal">时间间隔-默认3000</param>
|
/// <param name="showWaitingIndicator">是否显示等待-默认不显示</param>
|
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);
|
}
|
|
/// <summary>
|
/// 创建时钟特效
|
/// </summary>
|
/// <param name="ctrl">需要创建特效的控件</param>
|
/// <param name="ani">eClockEffectOptions</param>
|
/// <param name="frameInterVal">时间间隔-默认3000</param>
|
/// <param name="showWaitingIndicator">是否显示等待-默认不显示</param>
|
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);
|
}
|
|
/// <summary>
|
/// 创建覆盖特效
|
/// </summary>
|
/// <param name="ctrl">需要创建特效的控件</param>
|
/// <param name="ani">eCoverEffectOptions</param>
|
/// <param name="frameInterVal">时间间隔-默认3000</param>
|
/// <param name="showWaitingIndicator">是否显示等待-默认不显示</param>
|
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);
|
}
|
|
/// <summary>
|
/// 创建Comb特效
|
/// <param name="ctrl">需要创建特效的控件</param>
|
/// <param name="frameInterVal">时间间隔-默认3000</param>
|
/// <param name="showWaitingIndicator">是否显示等待-默认不显示</param>
|
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);
|
}
|
|
/// <summary>
|
/// 开始特效
|
/// </summary>
|
/// <param name="ctrl"></param>
|
public static void StartAnimation(this Control ctrl)
|
{
|
TransitionMgr.StartTransition(ctrl);
|
}
|
|
/// <summary>
|
/// 结束特效
|
/// </summary>
|
/// <param name="ctrl"></param>
|
public static void EndAnimation(this Control ctrl)
|
{
|
TransitionMgr.EndTransition();
|
}
|
|
|
|
}
|
}
|