Есть такая проблема: У меня есть кнопка, при задержке на ней курсора мыши, она увеличивается в размерах, вроде как маленькая анимация, но из-за использования задержек System.Threading.Thread.Sleep(10) тормозит отрисовка формы "О программе", так как когда курсор покидает кнопку, она анимированно обратно уменьшается.
| Код | private void btnAboutProg_MouseHover(object sender, EventArgs e) { if (this.btnAboutProg.Width < 50) { Point P = new Point(this.chBoxReapeat.Location.X, this.chBoxReapeat.Location.Y); for (int i = 0; i < 6; i++) { this.btnAboutProg.Width += 12; P.X += 12; this.chBoxReapeat.Location = P; this.chBoxReapeat.Refresh(); this.btnAboutProg.Refresh(); System.Threading.Thread.Sleep(10); } this.btnAboutProg.Image = null; this.btnAboutProg.Text = "О программе"; } }
|
и когда покидает курсор кнопку:
| Код | private void btnAboutProg_MouseLeave(object sender, EventArgs e) { if (this.btnAboutProg.Width > 50) { Point P = new Point(this.chBoxReapeat.Location.X, this.chBoxReapeat.Location.Y); this.btnAboutProg.Text = ""; for (int i = 0; i < 6; i++) { P.X -= 12; this.chBoxReapeat.Location = P; this.chBoxReapeat.Refresh(); this.btnAboutProg.Width -= 12; System.Threading.Thread.Sleep(10); } this.btnAboutProg.Image = Properties.Resources.clock; } }
|
Возможно ли сделать анимацию в отдельном потоке? Есть ли способ задержки выполнения цикла без тормозов всего приложения? Выложите пожалуйста пример. |