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(); } } }