Выполнить анимацию свойств Windows Forms в C#

Изменение свойств элемента управления со временем называется анимацией свойств. Отслеживание того, где свойства элемента управления, например, его положение при его перемещении, может быть сложным, особенно если вам нужно одновременно анимировать несколько объектов. В этом примере используется следующий класс ControlSprite, чтобы отслеживать элемент управления, когда он перемещается по прямой.

Класс начинается с некоторых относительно простых деклараций. Единственная действительно интересная часть здесь - объявление события Done, которое класс поднимает, когда его управление закончило движение.

Конструктор класса принимает в качестве параметра элемент управления, который он будет перемещать.

Первая перегруженная версия метода Start перемещает вещи. Он сохраняет текущее и конечное местоположение элемента управления и вычисляет общее расстояние, на которое должен двигаться элемент управления. Затем он использует это расстояние и параметр pixels_per_second, чтобы определить, сколько он должен увеличивать координату X и Y элемента управления в секунду для достижения желаемого движения в пикселях в секунду. Метод Start вычисляет общий период времени, в течение которого будет выполняться движение, создает Timer для управления движением, а затем вызывает вторую перегруженную версию Start .

Вторая версия Start сохраняет текущее время в переменной LastMoveTime и включает Timer.

Метод Stop просто отключает таймер sprite

.

Когда Timer вызывает событие Tick, спрайт определяет, сколько времени прошло с момента последнего обновления позиции элемента управления и добавило истекшее время к общему прошедшему до сих пор. Если элемент управления движется достаточно долго, чтобы достичь цели, код отключает Timer, переводит элемент управления в его конечное положение и вызывает событие Done. Если элемент управления не двигался достаточно долго, чтобы достичь цели, код увеличивает координаты X и Y элемента управления.

В примерной программе используются два спрайта для анимации Button и Label одновременно.

Следующий код показывает, как программа готовит анимировать свои элементы управления.

Этот код объявляет два объекта ControlSprite. Обработчик события Load инициализирует объекты и устанавливает обработчик событий Button Done (описанный в скором времени).

При нажатии кнопки выполняется следующий код.

Этот код сначала определяет, будет ли в настоящее время кнопка Button запускать или останавливать. Если кнопка Button говорит «Пуск», код говорит «Стоп». Тогда, если X-позиция Button равна 12, код запускает оба спрайта, перемещая элементы управления в позиции (197, 229) и (12, 232). Если X-позиция Button равна 197, код запускает оба спрайта, перемещая элементы управления в позиции (12, 12) и (186, 12).

Если X-позиция Button не является ни 12, ни 197, код просто вызывает методы sprites Start, чтобы они продолжали предыдущий ход. (Таким образом, вы можете остановить и перезапустить движение, когда захотите.)

Если кнопка начинается с надписей Stop, то код просто вызывает методы sprites Stop.

В следующем коде показан обработчик события Button Done.

Этот код просто сбрасывает текст Button для начала, чтобы вы могли перезапустить анимацию.

Источник: http://csharphelper.com/blog/2015/08/perform-windows-forms-property-animation-in-c/

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (Пока оценок нет)

Add a Comment

Ваш e-mail не будет опубликован. Обязательные поля помечены *