namespace Microsoft.Windows.Forms.Animate { /// <summary> /// 线性动画 /// </summary> public sealed class UILinearAnimation : Animation<float> { /// <summary> /// 默认动画执行时间 /// </summary> public const int DEFAULT_ANIMATION_SPAN = 200; private float m_From; /// <summary> /// 获取或设置起点 /// </summary> public float From { get { return this.m_From; } set { this.m_From = value; } } private float m_To; /// <summary> /// 获取或设置终点 /// </summary> public float To { get { return this.m_To; } set { this.m_To = value; } } private float m_Current; /// <summary> /// 获取动画当前帧 /// </summary> public override float Current { get { if (this.m_From >= this.m_To) { this.Stop(); return this.m_Current = this.m_To; } double percentage = this.Percentage; return this.m_Current = (percentage == STOPPED ? this.m_To : (float)(this.m_From + (this.m_To - this.m_From) * percentage)); } } /// <summary> /// 构造函数 /// </summary> public UILinearAnimation() { base.Span = DEFAULT_ANIMATION_SPAN; } /// <summary> /// 继续动画 /// </summary> /// <param name="to">终点</param> public void Continue(float to) { this.m_From = this.m_Current; this.m_To = to; this.Start(); } /// <summary> /// 重新开始动画 /// </summary> public void Next() { base.Start(); } /// <summary> /// 停止动画 /// </summary> public new void Stop() { base.Stop(); } /// <summary> /// 释放资源 /// </summary> /// <param name="disposing">释放托管资源为 true,否则为 false</param> protected override void Dispose(bool disposing) { } } }