// COPYRIGHT (C) Tom. ALL RIGHTS RESERVED. // THE AntdUI PROJECT IS AN WINFORM LIBRARY LICENSED UNDER THE Apache-2.0 License. // LICENSED UNDER THE Apache License, VERSION 2.0 (THE "License") // YOU MAY NOT USE THIS FILE EXCEPT IN COMPLIANCE WITH THE License. // YOU MAY OBTAIN A COPY OF THE LICENSE AT // // http://www.apache.org/licenses/LICENSE-2.0 // // UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING, SOFTWARE // DISTRIBUTED UNDER THE LICENSE IS DISTRIBUTED ON AN "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. // SEE THE LICENSE FOR THE SPECIFIC LANGUAGE GOVERNING PERMISSIONS AND // LIMITATIONS UNDER THE License. // GITEE: https://gitee.com/antdui/AntdUI // GITHUB: https://github.com/AntdUI/AntdUI // CSDN: https://blog.csdn.net/v_132 // QQ: 17379620 using System; using System.Windows.Forms; namespace AntdUI { public class ITaskOpacity : IDisposable { Control control; Action action; public ITaskOpacity(ILayeredForm _control) { control = _control; action = new Action(() => { _control.Print(); }); } public ITaskOpacity(Form _control) { control = _control; action = new Action(() => { _control.Invalidate(); }); } public ITaskOpacity(IControl _control) { control = _control; action = new Action(() => { _control.Invalidate(); }); } ITask? Thread = null; bool enable = true; public bool Enable { get => enable; set { if (enable == value) return; enable = value; action(); } } bool _switch = false; public bool Switch { get => _switch; set { if (value && !enable) value = false; if (_switch == value) return; _switch = value; if (Config.Animation) { Thread?.Dispose(); Animation = true; var prog = (int)(MaxValue * .078F); if (value) { Thread = new ITask(control, () => { Value += prog; if (Value > MaxValue) { Value = MaxValue; return false; } action(); return true; }, 10, () => { Value = MaxValue; Animation = false; action(); }); } else { Thread = new ITask(control, () => { Value -= prog; if (Value < 1) { Value = 0; return false; } action(); return true; }, 10, () => { Value = 0; Animation = false; action(); }); } } else { Value = _switch ? MaxValue : 0; action(); } } } bool _down = false; public bool Down { get => _down; set { if (_down == value) return; _down = value; Thread?.Dispose(); action(); } } public int MaxValue { get; set; } = 255; public int Value { get; private set; } public bool Animation { get; private set; } public void Dispose() { Thread?.Dispose(); } } }