123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778 |
- using System;
- using Microsoft.Windows.Forms.Animate;
- namespace Microsoft.Windows
- {
-
-
-
- public sealed class UIGradientAnimation : Animation<float>
- {
- private const float ANIMATION_DURATION = 500;
- private const float FIRST_TIME = 0.5f * ANIMATION_DURATION;
- private const float FIRST_PERCENT = 0.875f;
- private const float SECOND_TIME = ANIMATION_DURATION - FIRST_TIME;
- private const float SECOND_PERCENT = 1f - FIRST_PERCENT;
- private float m_From;
-
-
-
- public float From
- {
- get { return this.m_From; }
- set { this.m_From = value; }
- }
- private float m_To;
-
-
-
- public float To
- {
- get { return this.m_To; }
- set { this.m_To = value; }
- }
-
-
-
- public UIGradientAnimation()
- {
- }
-
-
-
- public override float Current
- {
- get
- {
- float distance = this.m_To - this.m_From;
- float escaped = (float)(DateTime.Now - this.StartTime).TotalMilliseconds;
- if (escaped < FIRST_TIME)
- return this.m_From + escaped / FIRST_TIME * distance * FIRST_PERCENT;
- if (escaped < ANIMATION_DURATION)
- return this.m_From + (escaped - FIRST_TIME) / SECOND_TIME * distance * SECOND_PERCENT + distance * FIRST_PERCENT;
- this.Stop();
- return this.m_To;
- }
- }
-
-
-
- public void Next()
- {
- base.Start();
- }
-
-
-
-
- protected override void Dispose(bool disposing)
- {
- }
- }
- }
|