Анимируйте e.Graphics.DrawLine со стрелкой - PullRequest
0 голосов
/ 16 марта 2010

Мне нужно «оживить» стрелку. Он может идти в любом направлении (вверх, вниз, влево, вправо и по диагонали), и стрелка будет в конце. Это должно появиться, как будто это растет от начала до конца. Чтобы сделать вещи более сложными, он должен быть в пользовательском элементе управления, чтобы можно было добавить его в коллекцию элементов управления в формах и удалить его, чтобы удалить его с экрана, а его фон действительно прозрачен (без color.transparent), поэтому я не могу нарисовать фон, чтобы "очистить" предыдущую строку. У меня это уже статично (нарисовано от начала до конца), но я не могу его оживить. Я попытался добавить таймер в пользовательский элемент управления, но мне не удалось получить правильный алгоритм для вычисления промежуточных концов линии, пока она растет. Любая помощь будет оценена. Спасибо

Ответы [ 2 ]

0 голосов
/ 11 ноября 2010

Вам не нужен другой поток - я успешно реализовал анимацию Windows Forms.

Мой дизайн:

  • Используйте объект Windows.System.Forms.Timer для регулярного вызова функции обратного вызова 'Animate ()'
  • функция Animate () обновляет свойство вашей стрелки, а затем вызывает Invalidate () для элемента управления Windows
  • все это происходит в одном и том же потоке пользовательского интерфейса, поэтому вы не получите никаких эффектов мерцания (если на вашем элементе управления включена двойная функция подавления).
0 голосов
/ 16 марта 2010

При использовании анимации в форме Windows вы должны использовать другой поток. Посмотрите на использование фонового работника: http://msdn.microsoft.com/en-us/library/system.componentmodel.backgroundworker.aspx

...