Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ООП_самостійне_опрацюв.doc
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
1.22 Mб
Скачать

2. Мультиплікація.

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

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

Наступна|така| проста програма, текст якої приведений в лістингу, а вид форми – на малюнку, демонструє рух кола від лівої до правої межі|кордону| вікна програми.

Форма програми Рухоме коло

Лістинг. Рухоме коло

unit mcircle_;

interface|

uses|

Windows|, Messages|, SysUtils|, Classes|

Graphics|, Controls|, Forms|

Dialogs|, ExtCtrls|, StdCtrls|;

type|

TForm1 = class(TForm) Timer1: TTimer;

procedure Timer1Timer(Sender: TObject};

procedure FormActivate(Sender: TObject);

private|

{ Private| declarations| }

public|

{ Public| declarations| }

end|;

implementation|

{$R *.DFM}

var|

Form1|: TForml|;

x,y|: byte|; // координати центру кола

dx|: byte|; // приріст координати x при русі кола

// стирає|пере| і малює коло на новому місці|місце-милі|

procedure| Ris|;

begin|

// стерти коло

form1|.Canvas.Pen.Color:=form1.Color;

form1|.Canvas.Ellipse(x,y,x+10,y+10|);

x:=x+dx|;

// намалювати коло на новому місці|місце-милі|

form1|.Canvas.Pen.Color:=clBlack;

form1|.Canvas.Ellipse(x,y|, x+10|, y+10|) ;

end|;

// сигнал від таймера

procedure TForm1.Timer1Timer(Sender: TObject);

begin|

Ris|;

end|;

procedure TForm1.FormActivate(Sender: TObject);

begin|

x:=0|;

y:=10|;

dx:=5|;

timer1|.Interval:=50;

// період виникнення події OnTimer| – 0.5 сек

form1|.canvas.brush.color:=forml.color;

end|;

end|.

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

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

Значок компоненту Timer

Властивості компоненту Timer

Name| Interval|

 

Enabled

Ім'я компоненту. Використовується для доступу до компоненту Період генерації події OnTimer|. Задається в мілісекундах

Дозвіл роботи. Вирішує (значення True) або забороняє (значення False) генерацію події OnTimer

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

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

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

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

 

Питання для самоконтролю:

  1. Який об’єкт зручно використовувати при роботі з графікою?

  2. За допомогою якого методу можна завантажити малюнок з файлу?

  3. Як вивести вміст бітового образу (картинку) на поверхню форми або області виведення ілюстрації?

  4. Що розуміють під мультиплікацією?

  5. Назвіть властивості компоненту таймер.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]