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