internal AnimationInstance(IGuiElement element, TimeSpan duration, ApplyAnimation func) { this.Element = element; this.Initial = duration; this.TimeRemaining = duration; this.Func = func; }
public Task BeginColorChange(IGuiElement element, Color targetColor, TimeSpan duration) { var initialColor = element.Shade; ApplyAnimation colorFunc = (e, t) => e.Shade = InterpolateColors(initialColor, targetColor, (float)t); this.animations.Add(new AnimationInstance(element, duration, colorFunc)); return(Task.Delay(duration)); }
public Task BeginMove(IGuiElement element, Vector2 targetPos, TimeSpan duration) { var initialPos = element.Position; ApplyAnimation scaleFunc = (e, t) => e.Position = initialPos + (targetPos - initialPos) * (float)t; this.animations.Add(new AnimationInstance(element, duration, scaleFunc)); return(Task.Delay(duration)); }
public Task BeginScale(IGuiElement element, float targetScale, TimeSpan duration) { var initialScale = element.Scale; ApplyAnimation scaleFunc = (e, t) => e.Scale = (float)(initialScale + (targetScale - initialScale) * t); this.animations.Add(new AnimationInstance(element, duration, scaleFunc)); return(Task.Delay(duration)); }
public Task BeginSineColorChange(IGuiElement element, Color startColor, Color targetColor, TimeSpan duration, float freq = 1) { ApplyAnimation colorFunc = (e, t) => { var alpha = 1.0 / 2.0 * (Math.Sin(t * 2 * Math.PI * freq) + 1); e.Shade = InterpolateColors(startColor, targetColor, (float)alpha); }; this.animations.Add(new AnimationInstance(element, duration, colorFunc)); return(Task.Delay(duration)); }
static void timer_Tick(object sender, EventArgs e) { Timer timer = (Timer)sender; ApplyAnimation animate = (ApplyAnimation)timer.Tag; switch (animate.Style) { case lxMessageBox.AnimateStyle.SlideDown: if (_msgBox.Height < animate.FormSize.Height) { _msgBox.Height += 17; _msgBox.Invalidate(); } else { _timer.Stop(); _timer.Dispose(); } break; case lxMessageBox.AnimateStyle.FadeIn: if (_msgBox.Opacity < 1) { _msgBox.Opacity += 0.1; _msgBox.Invalidate(); } else { _timer.Stop(); _timer.Dispose(); } break; case lxMessageBox.AnimateStyle.ZoomIn: if (_msgBox.Width > animate.FormSize.Width) { _msgBox.Width -= 17; _msgBox.Invalidate(); } if (_msgBox.Height > animate.FormSize.Height) { _msgBox.Height -= 17; _msgBox.Invalidate(); } break; } }