Слайд объекта с помощью For Loop (C #) - PullRequest
2 голосов
/ 20 июня 2010

Я довольно много искал вокруг и не нашел ничего особенного.

Можно ли "скользить" или "перемещать" с помощью C #, объект из одного места в другое, используяпростой цикл For?

Спасибо

Ответы [ 2 ]

3 голосов
/ 20 июня 2010

Я бы посоветовал вам использовать Таймер .Существуют и другие варианты, но это будет самый простой способ, если вы хотите избежать проблем с многопоточностью и т. Д.

Использование прямого цикла потребует откачки очереди сообщений с помощью Application.DoEvents(), чтобы обеспечить возможность для оконфактически отобразить обновленный элемент управления, в противном случае цикл for будет выполняться до завершения без обновления пользовательского интерфейса, и элемент управления будет отображаться для перехода из исходного местоположения в целевое местоположение.

Вот пример QAD для анимации кнопки внаправление Y при нажатии.Этот код предполагает, что вы помещаете элемент управления таймером в форму, называемую animationTimer.

private void button1_Click(object sender, EventArgs e)
{
  if (!animationTimer.Enabled)
  {
    animationTimer.Interval = 10;
    animationTimer.Start();
  }
}

private int _animateDirection = 1;
private void animationTimer_Tick(object sender, EventArgs e)
{
  button1.Location = new Point(button1.Location.X, button1.Location.Y + _animateDirection);

  if (button1.Location.Y == 0 || button1.Location.Y == 100)
  {
    animationTimer.Stop();
    _animateDirection *= -1; // reverse the direction
  }
}
1 голос
/ 20 июня 2010

Предполагая, что объект, о котором вы говорите, является своего рода Control, вы можете просто изменить его свойство Location.

Так что-то вроде этого:

for(int i = 0; i < 100; i++)
{
    ctrl.Location.X += i;
}

Должен работать, я думаю.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...