Для создания анимации в Windows Form, в Microsoft Windows присутствует библиотека «user32.dll» с функцией AnimateWindow. Данная функция дает возможность производить специальные эффекты при показе или сокрытии окон. Имеются четыре типа мультипликации: ролик, слайд, свертывание или развертывание и плавное альфа-перетекание.
Рассмотрим пример плавного проявления формы и сворачивания. Создайте проект Windows Form в Microsoft Visual Studio. В режима конструктора формы, сделайте двойной клик левой клавишей мыши, по ее любой части. Вы перейдете в автоматически созданный метод «Form1_Load». Добавьте в него приведенный ниже листинг.
AnimateWindow(this.Handle, 1000, AnimateWindowFlags.AW_BLEND | AnimateWindowFlags.AW_VER_POSITIVE);
Перейдите обратно в конструктор формы и сделайте клик правой клавишей мыши по любой области формы. Из появившегося контекстного меню, выберете пункт свойства. В открывшейся вкладке «Свойства», в верхней части найдите значок с молнией – события формы. Найдите событие «Form1_FormClosing». Данное событие срабатывает при закрытии формы. Добавьте в данный метод приведенный ниже листинг.
AnimateWindow(this.Handle, 1000, AnimateWindowFlags.AW_BLEND | AnimateWindowFlags.AW_HIDE);
Добавим и рассмотрим структуру функции AnimateWindow.
[System.Runtime.InteropServices.DllImport("user32.dll")]
static extern bool AnimateWindow(IntPtr hWnd, int time, AnimateWindowFlags flags);
Параметры данной функции:
- hWnd – идентификатор окна (например, Form1.hwnd).
- time – продолжительность эффект в миллисекундах. 1 секунда = 1000 миллисекунд.
- flags — эффект.
Параметр AnimateWindowFlags может иметь одно или комплекс следующих значений:
| Параметр | Значение | описание |
|---|---|---|
| AW_ACTIVATE | 0x00020000 | Активирует окно. Нельзя использовать с AW_HIDE. |
| AW_BLEND | 0x00080000 | Применяет эффект Alpha-blended к окнам верхнего уровня. |
| AW_CENTER | 0x00000010 | Эффект – прямоугольник наружу, или внутрь, в зависимости от наличия значения AW_HIDE. |
| AW_HIDE | 0x00010000 | Скрывает окно. Если значение не указано, то окно будет появляться. |
| AW_HOR_NEGATIVE | 0x00000002 | Анимирует окно справа налево. Этот флажок может быть использован с роликом или слайдом мультипликации. Он игнорируется, когда используется с флажком AW_CENTER или AW_BLEND. |
| AW_HOR_POSITIVE | 0x00000001 | Анимирует окно слева направо. Этот флажок может быть использован с роликом или слайдом мультипликации. Он игнорируется, когда используется с флажком AW_CENTER или AW_BLEND. |
| AW_SLIDE | 0x00040000 | Эффект скольжения. Не работает при наличии значения AW_CENTER. |
| AW_VER_NEGATIVE | 0x00000008 | Анимирует окно снизу вверх. Этот флажок может быть использован с роликом или слайдом мультипликации. Он игнорируется, когда используется с флажком AW_CENTER или AW_BLEND. |
| AW_VER_POSITIVE | 0x00000004 | Анимирует окно сверху вниз. Этот флажок может быть использованы с роликом или слайдом мультипликации. Он игнорируется, когда используется с флажком AW_CENTER или AW_BLEND. |
Добавьте в листинг главной формы комплекс значений AnimateWindowFlags и саму функцию.
[Flags]
enum AnimateWindowFlags
{
AW_HOR_POSITIVE = 0x00000001,
AW_HOR_NEGATIVE = 0x00000002,
AW_VER_POSITIVE = 0x00000004,
AW_VER_NEGATIVE = 0x00000008,
AW_CENTER = 0x00000010,
AW_HIDE = 0x00010000,
AW_ACTIVATE = 0x00020000,
AW_SLIDE = 0x00040000,
AW_BLEND = 0x00080000
}
[System.Runtime.InteropServices.DllImport("user32.dll")]
static extern bool AnimateWindow(IntPtr hWnd, int time, AnimateWindowFlags flags);
Запустите ваш проект, нажав на клавиатуре клавишу «F5». При запуске вашего проекта вы увидите анимацию главной формы.
0.00 (0%) 0 votes










