Анимация без лишних усилий

Сегодня мы поговорим о том, как достичь красивой анимации. Для этого не нужно писать килобайты кода или строить программу на технологии Flash. Отличные результаты можно получить используя только функции WinAPI или возможности Delphi. Я рассмотрю несколько таких необычных возможностей, причем самый большой пример будет состоять из менее чем 10 (!) строк кода.
Альфа-смешивание
Для того, что бы сделать форму полу-прозрачной не надо использовать какие либо компоненты. Не надо даже прописывать ни строчки кода. Что бы сделать форму полу-прозрачной, достаточно присвоить значению TForm.AlphaBlend = true и AlphaBlendValue меньшее чем 255. Чем меньше будет значение AlphaBlendValue, тем прозрачнее будет форма. Можно манипулировать этими значениями и создавать интересные эффекты с помощью циклов. Вот, например, как можно создать красивый эффект при активации формы
Form1.AlphaBlend = true;
Form1.AlphaBlendValue = 100;
Form1.Show;
for i = 100 to 255 do
begin
Form1.AlphaBlendValue = i;
Application.ProcessMessages;
end;
Следует заметить, что эффект не будет плавным на слабых машинах.
AnimateWindow
В предыдущем примере я показал, как с помощью цикла плавно вывести форму на экран. Для достижения почти такого же эффекта можно воспользоваться WinApi функцией AnimateWindow. Функции передается 3 параметра hWnd THandle — дескриптор окна, которое нужно анимировать; dwTime Cardinal = время, на протяжении которого будет продолжаться анимация окна; dwFlags Cardinal; — флаги, определяющие способ анимации. Пример
AnimateWindow (Form1.Handle, 1000, AW_BLEND);
Form1.Show;
Помимо флага AW_BLEND есть ещё несколько флагов, с помощью которых можно достичь довольно впечатляющие результаты
AW_HOR_POSITIVE — анимирует форму слева направо
AW_HOR_NEGATIVE — анимирует форму справа налево
AW_VER_POSITIVE — анимирует форму сверху вниз
AW_VER_NEGATIVE — анимирует форму снизу вверх
AW_CENTER — анимирует форму из центра
С помощью этой технологии удобно демонстрировать слайды. А если одновременно ещё и использовать альфа-смешивание, то получится очень впечатляюще.
Дырявая форма
При использовании компонента TShape можно сделать в форме дырку. Положите на форму TShape и присвойте свойству Brush.Color = clGreen. А если ещё и присвоить свойству формы FormStyle = fsStayOnTop то через форму можно не только смотреть на то, что находите позади неё, но и нажимать на кнопки, редактировать текст и т.п. Трюк Летающие кнопки» расположите TShape на форму (Shape = stRectangle, Brush.Color = clRed), присвойте свойству Align = alClient и присвойте свойству формы BorderStyle = bsNone. Далее добавьте на форму кнопки и другие элементы управления.
Масштабирование
Ну и на последок я расскажу про полезную возможность масштабирования. Само масштабирование производит метод ScaleBy класса TForm. Свойства PixelPerInch и Scaled позволяют Delphi автоматически изменять размер формы в случае если приложение запускается с использованием системного шрифта другого размера. Сам метод масштабирует только содержимое формы, если вы хотите, что бы рамер формы тоже масштабировался вместе с элементами управления, то установите свойство AutoScroll = false.
«