private void timer1_Tick(object sender, EventArgs e) { elapsed += (double)timer1.Interval / 1000.0; if (!loads && elapsed >= DURATION) { if (elapsed >= (Granted ? DURATION : MAXDURATION)) { kill(); return; } } SendMessage(BG.Handle, WM_SETREDRAW, false, 0); SendMessage(FG.Handle, WM_SETREDRAW, false, 0); double percent = (elapsed / (Granted ? DURATION : MAXDURATION)); if (!loads) { Opacity = Math.Min(1, 4 - (percent * 4)); if (Opacity < 0.001) { Visible = false; } } int Move = (int)(BackMargin * percent) % 218; BG.Location = new Point(0, Move); FG.Location = new Point(0, -Move); SendMessage(BG.Handle, WM_SETREDRAW, true, 0); SendMessage(FG.Handle, WM_SETREDRAW, true, 0); BG.Invalidate(); FG.Invalidate(); }