Графічні можливості delphi мультиплікація, використання ьіотвих образів, delphi, компоненти

Під мультиплікацією зазвичай розуміється рухомий і мінливий малюнок. У найпростішому випадку малюнок може тільки рухатися або тільки змінюватися.

Як було показано вище, малюнок може бути сформований з графічних примітивів (ліній, кіл, луг, багатокутників і т. Д.). Забезпечити переміщення малюнка досить просто: треба спочатку вивести малюнок на екран, потім через деякий час стерти його і знову вивести цей же малюнок, але вже на деякій відстані від його початкового положення. Підбором часу між виведенням і видаленням малюнка, а також відстані між старим і новим положенням малюнка (кроку переміщення), можна домогтися того, що у спостерігача буде складатися враження, що малюнок рівномірно рухається по екрану.

Наступна проста програма, текст якої наведено в лістингу 10.8, а вид форми - на рис. 10.15, демонструє рух окружності від лівої до правої межі вікна програми.

Мал. 10.15. Форма програми Рухома окружність

Лістинг 10.8. Рухома окружність

01. unit mcircle;

04. Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls, StdCtrls;

06. TForml = class (TForra)

07. Timer1: TTimer;

08. procedure TimerlTimer (Sender: TObject);

Основну роботу виконує процедура RIS, яка стирає коло і виводить її на новому місці. Стирання окружності виконується шляхом перемальовування окружності поверх намальованої, але кольором фону.

Для забезпечення періодичного виклику процедури Ris в форму програми додано невізуальний компонент Timer (таймер), значок якого знаходиться на вкладці System палітри компонентів (рис. 10.16). Властивості компонента Timer, перераховані в табл. 10.9.


Додається компонент Timer до форми звичайним чином, однак, оскільки компонент Timer є незриме, т. Е. Під час роботи програми не відображається на формі, його значок можна помістити в будь-яке місце форми.

Компонент Timer генерує подія OnTimer. Період виникнення події OnTimer вимірюється в мілісекундах і визначається значенням властивості interval. Слід звернути увагу на властивість Enabled. Воно дає можливість програмі "запустити" або "зупинити" таймер. Якщо значення властивості Enabled одно False, то подія OnTimer не виникає.

Подія OnTimer в даній програмі обробляється процедурою TimeriTimer, яка, в свою чергу, викликає процедуру Ris. Таким чином, в програмі реалізований механізм періодичного виклику процедури Ris.

Примітка: Змінні х, у (координати центру кола) і dx (приріст координати х при русі окружності) оголошені поза процедурою Ris, т. Е. Вони є глобальними. Тому треба не забути виконати їх ініціалізацію (в програмі ініціалізацію глобальних змінних реалізує процедура FormActivate).

Метод базової точки

При програмуванні складних зображень, що складаються з безлічі

елементів, використовується метод, який називається методом базової точки.

Суть цього методу полягає в наступному:

При програмуванні складних зображень, що складаються з множестваелементов, використовується метод, який називається методом базової точки.

Суть цього методу полягає в наступному:

  1. Вибирається деяка точка зображення, яка приймається за базову.
  2. Координати інших точок відраховуються від базової точки.
  3. Якщо координати точок зображення відраховувати від базової у відносних одиницях, а не в пікселах, то забезпечується можливість збільшувати або зменшувати зображення.

На рис. 10.17 наведено зображення кораблика. Базовою точкою є точка з координатами (x0, y0). Координати інших точок відраховуються саме від цієї точки.

Мал. 10.17. Визначення координат зображення щодо базової точки

У лістингу 10.9 наведено текст програми, яка виводить на екран зображення перемішати кораблика.

Лістинг 10.9. кораблик

Отрисовку і стирання зображення кораблика виконує процедура Titanik, яка отримує в якості параметрів координати базової точки і колір, яким треба викреслити зображення кораблика. Якщо при виклику процедури колір відрізняється від кольору фону форми, то процедура малює кораблик, а якщо совпадает- то "стирає". У процедурі Titanik оголошені константи dx і dy, що визначають крок (в пікселах), який використовується при обчисленні координат точок зображення. Змінюючи значення цих констант, можна проводити масштабування зображення.

Використання бітових образів

У попередньому прикладі зображення формувалося з графічних при-

мітів. Тепер розглянемо, як можна реалізувати переміщення одного

складного зображення на тлі іншого, наприклад переміщення літака

на тлі міського пейзажу.

Ефект переміщення картинки може бути створений шляхом періодичної

перемальовування картинки з деяким зміщенням щодо її колишнього

положення. При цьому передбачається, що перед виведенням картинки в новій

У попередньому прикладі зображення формувалося з графічних примітивів. Тепер розглянемо, як можна реалізувати переміщення одногосложного зображення на тлі іншого, наприклад переміщення літака на тлі міського пейзажу.

Ефект переміщення картинки може бути створений шляхом періодичної перемальовування картинки з деяким зміщенням щодо її прежнегоположенія. При цьому передбачається, що перед виведенням картинки в новій точці спочатку видаляється попереднє зображення. Видалення картинки може бути виконано шляхом перемальовування всієї фонової картинки або тільки тієї її частини, яка перекрита бітовим чином, що рухається.

Форма програми приведена на рис. 10.18, а текст - в лістингу ЙШЛО.

Компонент image використовується для виведення фону, а компонент Timer - для організації затримки між цикл ами видалення і виведення на новому місці зображення літака.

Лістинг 10.10. летить літак