GRAFIKA_V_Turbo_Delphi_2006.ppt
- Количество слайдов: 85
ГРАФІКА В Turbo Delphi 2006 “Одне зображення варте тисячі слів” Сун
Graphics Devices Interface (GDI) • GDI (Інтерфейс графічного пристрою) здійснює за допомогою функцій виведення графічної інформації на екран або принтер. • GDI-функції – апаратно-незалежні. Програма працює з логічним пристроєм. • При виконанні запиту програми на виведення інформації GDI або драйвер враховують обмеження і особливості фізичних пристроїв.
РОЗПОДІЛ ПОВНОВАЖЕНЬ: • GDI добре підходить для офісних програм. • Для ігор слід використовувати Open. GL або Direct. X.
Display Context (DC) • Програма у системі Windows може працювати на комп’ютерах різної інформації. • Взаємодія програми з драйвером здійснюється через спеціальну структуру даних контекст відображення - DC(Display Context). • DC містить основні характеристики пристрою виведення та інструменти малювання.
До DC належать: • шрифт; • перо; • пензель.
ВЗАЄМОДІЯ ПРОГРАМИ І ПРИСТРОЮ ВИВЕДЕННЯ Програма DC Драйвер пристрою GDI
СПЕЦІАЛЬНІ КЛАСИ DELPHI: • TCanvas – відображення; для • TFont – для шрифта; • TPen – для пера; • TBrush – для пензля. контекста
ВІЗУАЛЬНІ КОМПОНЕНТИ МАЮТЬ ВЛАСТИВОСТІ: • Canvas • Font • Pen • Brush
ДОСТУПНІСТЬ ВЛАСТИВОСТЕЙ: • У форми Form класу TForm доступні властивості: Canvas, Font, Brush. • У кнопки Button класу TButton доступні властивості: Font, Brush. • У геометричної фігури Shape класу TShape - Font, Pen, Brush.
ДЛЯ РОБОТИ ІЗ ЗОБРАЖЕННЯМИ DELPHI: • TPicture – контейнер для зображення; • TGraphic – базовий клас для графічних об’єктів-зображень; • TBitmap – растрове зображення; • TIcon – піктограма; • TMeta. File – метафайл (векторноорієнтовані зображення).
Малювання при виконанні програми • Зображення малюють на поверхні форми чи інших компонент різними інструментами. • Зображення – комбінація графічних примітивів та тексту. • Візуальні компоненти здатні самі відображати себе й свої елементи.
Особливості малювання при виконанні програми • На спосіб промальовування вказує спеціальна властивість. • Виведення графіки в області компонент виконуються завдяки процедурі, яка опрацьовує подію.
ХАРАКТЕРИСТИКИ КОМПОНЕНТ ДЛЯ ПРОГРАМНОГО ПРОМАЛЬОВУВАННЯ: КОМПОНЕНТ ВЛАСТИА ВІСТЬ ЗНАЧЕННЯ ПОДІЯ List. Box Style lb. Owner. Draw On. Draw. Item Fixed Combo. Box Style cs. Owner. Draw On. Draw. Item Fixed cs. Owner. Draw Variable
ХАРАКТЕРИСТИКИ КОМПОНЕНТ ДЛЯ ПРОГРАМНОГО ПРОМАЛЬОВУВАННЯ: КОМПОНЕНТА ВЛАСТИВІСТЬ ЗНАЧЕННЯ ПОДІЯ String. Grid Default. Dra False wing On. Draw. Cell Page. Control Owner. Draw True On. Draw. Tab Panels для Status. Bar ps. Owner. Dr aw On. Draw. Panel Style
ОСНОВНИЙ КЛАС ДЛЯ МАЛЮВАННЯ - TCanvas • З допомогою його властивостей і методів малюють на поверхні візуальних об’єктів, які володіють властивістю Canvas. • Розглянемо приклад використання для форми й Paint. Box із System. Використовують обробник подій On. Paint.
ОГОЛОШЕННЯ КЛАСУ type TForm 1 = class(TForm) Paint. Box 1: TPaint. Box; procedure Paint. Box 1 Paint(Sender: TObject); procedure Form. Paint(Sender: TObject); private ………
ОБРОБНИК ПОДІЙ procedure TForm 1. Form. Paint(Sender: TObject); begin Canvas. Rectangle(30, 190, 190) ; end; procedure TForm 1. Paint. Box 1 Paint(Sender: TObject); begin Paint. Box 1. Canvas. Rectangle(30, 190, 190) ; end;
Особливості малювання з використанням Canvas • Малюнки існують тільки під час роботи програми. • Зображення можна зберегти в графічному файлі або роздрукувати. • Зображення можуть бути статичними або анімаційними.
ОСОБЛИВОСТІ ОРГАНІЗАЦІЇ ПОЛОТНА:
ПРИ ВИКОНАННІ ГРАФІЧНИХ ОПЕРАЦІЙ ВИКОРИСТОВУЮТЬ ТИПИ: TPoint = record x, y: Long. Int; End; TRect = record case Integer of 0: (Left, Top, Right, Bottom: Integer); 1: (Top. Left, Bottom. Right: TPoint); end;
ПОЛОТНО Має велику кількість властивостей і методів, які дозволяють: – рухатися по поверхні полотна, – відображати графічні примітиви, – копіювати зображення або їх окремі області, – виводити текстову інформацію.
ПОЛОТНО • Містить об’єкти TPen, TBrush і TFont. • Об’єкти TPen, TBrush – для промальовування і заповнення геометричних фігур. • Об’єкт TFont – для управління атрибутами тексту, який виводиться на полотні.
ПОЛОТНО • Якщо об’єкт містить властивість Canvas і сам містить об’єкти пера, пензля та шрифта, то ці властивості не співпадають. • Наприклад: властивості Form 1. Font і Form 1. Canvas. Font не співпадають.
ПОЛОТНО • При виконанні графічних операцій використовується біжучий вказівник (вказівник позиції). • Перехід у біжучу позицію відбувається завдяки використанню метода Move. To(): Canvas. Move. To(0, 0); • Малювати на полотні можна за допомогою об’єктів класу TPen (перо).
Властивості TPen Властивість Визначає Color Колір лінії Width Товщину лінії Style Вид лінії Mode Режим відображення
Кольори Констант Колір а Константа Колір cl. Black cl. Silver Сріблястий cl. Maroon Каштановий cl. Red Червоний cl. Green Зелений cl. Lime Салатовий cl. Olive Оливковий cl. Blue Синій cl. Navy Темно-синій cl. Fuchsia Яскраворожевий cl. Purple Рожевий cl. Aqua Аквамаринови й cl. Teal Зеленоголубий cl. White Білий cl. Gray Сірий Чорний
Властивість width задає товщину лінії (в пікселах). Наприклад, команда Canvas. Pen. width: =3 встановлює товщину лінії в 3 піксела.
ВЛАСТИВІСТЬ style • З допомогою пера можна малювати лінії, які відрізняються одна від одної властивістю style.
ВЛАСТИВІСТЬ style Константа Вид лінії ps. Solid Суцільна лінія ps. Dash Пунктирна лінія, довгі штрихи ps. Dot Пунктирная лінія, короткі штрихи Штрих-пунктирная лінія, ps. Dash. Dot Пунктирная лінія, чергування одного довгого й двох коротких штрихів ps. Clear лінія не відображаєтся
Властивість Mode визначає, як формуватиметься колір точок лінії залежно від кольору точок полотна, через які ця лінія прокреслюється. За замовчуванням вся лінія будується кольором, визначеним значенням властивості Pen. Color.
Властивість Pen. Mode Константа Колір лінії pm. Black Чорний, не залежить від значення властивості Pen. Color pm. White Білий, не залежить від значення властивості Pen. Color pm. Copy Колір лінії визначається значенням властивості Pen. Color pm. Not. Copy Колір лінії є інверсним по відношенню до значення властивості Pen. Color pm. Not Колір точки лінії визначається як інверсний по відношенню до кольору точки полотна
Пензель (Canvas. Brush) Використовується методами, що забезпечують накреслення замкнутих областей для заливання цих областей.
Властивості TBrush Властивіс Визначає ть Color Колір зафарбування замкнутої області Style Стиль (тип) заповнення області
Властивості TBrush • Якщо перо дозволяє малювати на полотні лінії, то за допомогою пензля виконується зафарбовування областей і фігур, що намальовані на цьому полотні. • Об’єкт Tbrush володіє трьома властивостями: Color, Style і Bitmap.
Значення властивості Brush. Style визначає тип зафарбовування Константа Тип заповнення області bs. Solid Суцільна заливка bs. Clear Область не зафарбовується bs. Horizontal Горизонтальна штриховка bs. Vertical Вертикальна штриховка bs. FDiagonal Діагональна штриховка с нахилом ліній вперед bs. BDiagonal Діагональна штриховка с нахилом ліній назад bs. Cross Горизонтально-вертикальна штриховка, в клітинку bs. Diag. Cross Діагональна штриховка, в клітинку
Приклад обробника подій: procedure TForm 1. Form. Paint(Sender: TObject); const bs. Name: array[1. . 8] of string = ('bs. Solid', 'bs. Clear', 'bs. Horizontal', ‘bs. Vertical', ‘ bs. FDiagonal', ‘ bs. BDiagonal', 'bs. Cross', 'bs. Diag. Cross'); var x, y, w, h, k, i, j: integer; bs: TBrush. Style; begin w: =40; h: =40; y: =60;
Продовження обробника подій: for i: =1 to 2 do begin x: =10; for j: =1 to 4 do begin k: =j+(i-1)*4; // номер стилю заповнення case k of 1: bs: =bs. Solid; 2: bs: = bs. Clear; 3: bs: = bs. Horizontal; 4: bs: = bs. Vertical; 5: bs: = bs. FDiagonal; 6: bs: = bs. BDiagonal; 7: bs: = bs. Cross; 8: bs: = bs. Diag. Cross; end;
Продовження обробника подій: Canvas. Brush. Color : = cl. Green; // колір — зелений Canvas. Brush. Style : = bs; // стиль зафарбовування Canvas. Rectangle (x, y, x+w, y+h) ; Canvas. Brush. Style : = bs. Clear; Canvas. Text. Out(x, y-15, bs. Name[k]); // виведення назви стиля x : = x+w+30; end; y: =y+h+30; end;
ВИВЕДЕННЯ ТЕКСТУ НА ПОЛОТНІ • Для виведення тексту на поверхні малювання використовується метод Text. Out() в класі TCanvas. Оголошення методу. Text. Out виконується таким чином: Об’єкт. Canvas. Text. Out(x, у, Текст) де: Об’єкт— об’єкт на якому відбувається промальовування зображення; х, у — координати лівого верхнього кута, з якого розпочинається виведення тексту; • Текст — власне інформація, яка обмежена одинарними лапками.
ВИВЕДЕННЯ ТЕКСТУ НА ПОЛОТНІ Шрифт, який використовується для виведення тексту, визначається значенням властивості Font відповідного об'єкту Canvas. Властивість Font є об'єктом типу TFont.
ВЛАСТИВІСТЬ TFont Властивіст Визначає ь Name Size Style Назва шрифту. Розмір шрифта в пунктах (points). Стиль накреслення символів.
НАКРЕСЛЕННЯ • нормальне, напівжирне, курсивне, підкреслене, перекреслене. Стиль задається за допомогою констант: • fs. Bold (напівжирне), • fsltalic (курсивне), • fs. Underline (підкреслене), • fs. Strike. Out (перекреслене).
НАКРЕСЛЕННЯ Властиві сть Визначає style множина, що дозволяє комбінувати необхідні стилі. Наприклад, Объект. Canvas. Font : = [fs. Bold, fs. Italic]; Колір символів. У якості значення можна використовувати константу типу TColor. Color
Приклад обробника подій: procedure TForm 1. Form. Paint(Sender: TObject); begin with Canvas do begin Font. Name : = 'Tahoma'; Font. Size : = 20; Font. Style : = [fs. Italic, fs. Bold]; Font. Color: =cl. Red; Brush. Style : = bs. Clear; Text. Out(10, 40, 'Пишемо текст на канві'); end;
МЕТОДИ ПОЛОТНА: Arc(x 1, y 1, x 2, y 2, x 3, y 3, x 4, y 4: Integer) – дуга, Chord(x 1, y 1, x 2, y 2, x 3, y 3, x 4, y 4: Integer)– хорда еліпса, де x 1, y 1, x 2, y 2 координати кутів прямокутника, а x 3, y 3, x 4, y 4 – координати початку й кінця дуги чи хорди, Ellipse(x 1, y 1, x 2, y 2: Integer) – еліпс із заповненням.
Приклад обробника подій: procedure TForm 1. Form. Paint(Sender: TObject); begin Canvas. Arc(10, 200, 50, 100, 200); Canvas. Chord(10, 200, 50, 100, 200); Canvas. Ellipse(250, 10, 400, 200); end;
МЕТОДИ ПОЛОТНА: Rectangle(x 1, y 1, x 2, y 2) – заповнений прямокутник; Round. Rect(x 1, y 1, x 2, y 2, x 3, y 3) – заповнений прямокутник із скругленими краями; Fill. Rect(const Rect: TRect) - прямокутник із заповненням; Frame. Rect(const Rect: TRect) – прямокутник – рамка.
Приклад обробника подій: procedure TForm 1. Form. Paint(Sender: TObject); var r 1, r 2: TRect; begin with Canvas do begin Rectangle(5, 5, Client. Width-5, Client. Height-5); Round. Rect(20, 100, 20, 20); r 1: =Rect(200, 10, 300, 100); r 2: =Rect(200, 110, 300, 210); Brush. Color : = cl. Red; Fill. Rect(r 1); Brush. Color : = cl. Green; Frame. Rect(r 2); end;
МЕТОДИ ПОЛОТНА: Pixels(x, y): TColor – масив точок, Line. To(x, y) – будує відрізок від біжучого положення до точки (x, y), Polygon(const Points: array of TPoint) – многокутник із заповненням, Poly. Line(const Points: array of TPoint) - ламана.
Приклад використання Pixels: procedure TForm 1. Form. Paint(Sender: TObject); var i, j: integer; begin for I : = 30 to 100 do begin Canvas. Pixels[i, 50]: =cl. Red; Canvas. Pixels[i, 51]: =cl. Red; Canvas. Pixels[i, 52]: =cl. Red; end;
МЕТОДИ ПОЛОТНА: Pie(x 1, y 1, x 2, y 2, x 3, y 3, x 4, y 4: Integer) – сектор;
Приклад обробника подій: procedure TForm 1. Form. Paint(Sender: TObject); var p: array [1. . 3] of TPoint; gr: array[1. . 50] of TPoint; i, x 0, y 0, dx, dy: integer; begin with Canvas do begin Move. To(30, 30); Line. To(100, 100); Brush. Color : = cl. Blue; Pie(100, 10, 250, 200, 100, 60, 200, 100);
Продовження обробника подій: p[1]. x: =100; p[1]. y: =230; p[2]. x: =200; p[2]. y: =230; p[3]. x: =150; p[3]. y: =300; Brush. Color : = cl. Green; Polygon(p); x 0: =300; y 0: =200; dx: =5; dy: =5; for I : = 1 to 50 do begin gr[i]. x: = x 0 + (i-1)*dx; gr[i]. y: = y 0 - (i-1)*dy; end; Polyline(gr); end;
ПОБУДОВА ГРАФІКІВ ФУНКЦІЙ Потрібно написати процедуру побудови графіка функції на певній поверхні, що задається властивістю Canvas. Слід поставити осі координат в середині цієї області, а графік розтягнути так, щоб він охоплював всю область.
ПОБУДОВА ГРАФІКІВ ФУНКЦІЙ Будуватимемо методом lineto. Тому потрібно визначитися з кроком зміни величини аргументу. Слід взяти його оберненим до масштабу по осі ординат.
ПОБУДОВА ГРАФІКІВ ФУНКЦІЙ Так графік буде виглядати плавно за будь-якої функції і будь-якому початковому і кінцевому значенні абсциси. Масштабом по осі абсцис вважається: відношення ширини поверхні до різниці максимального і мінімального значення абсциси. Масштабом по осі ординат вважається: відношення висоти поверхні до різниці між максимальним і мінімальним значеннями даної функції у цьому інтервалі.
ПОБУДОВА ГРАФІКІВ ФУНКЦІЙ type TFunc = function (x: real): real; … Тип-функція, для того, щоб передавати ім'я функції в процедуру побудови графіка.
ПРОЦЕДУРИ і ФУНКЦІЇ ПРОГРАМИ procedure Draw. Graph (f: TFunc; a: real; b: real; C: TCanvas); // f - функція, графік, якої будується // a – ліва межа значень змінної, // b – права межа побудови // C – канва, на якій будують графік. var x, y, h: real; // h – крок обрахунків значень функції max, min: real; sx, sy: real; xmid, ymid: integer;
ПРОЦЕДУРИ і ФУНКЦІЇ ПРОГРАМИ begin // масштабування по х sx : = (c. Clip. Rect. Right)/(b-a); h : = 1/sx; // центр осей координат xmid : = c. Clip. Rect. Right div 2; ymid : = c. Clip. Rect. Bottom div 2;
ПРОЦЕДУРИ і ФУНКЦІЇ ПРОГРАМИ //знаходження min і max значень функції x : = a; max : = f( x); min : = max; while x<=b do begin y : = f( x); if y<min then min : = y; if y>max then max : = y; x : = x + h; end;
ПРОЦЕДУРИ і ФУНКЦІЇ ПРОГРАМИ // масштабування по у sy : = c. Clip. Rect. Bottom/ (max-min); // Установка кольору тла Image c. Brush. Color : = cl. Gray; // Заливання установленим кольором тла c. Fill. Rect(0, 0, c. Clip. Rect. Right, c. Clip. Rect. Bottom));
ПРОЦЕДУРИ і ФУНКЦІЇ ПРОГРАМИ //Побудова осей c. Move. To(0, ymid); c. Line. To(c. Clip. Rect. Right, ymid); c. Move. To(xmid, 0); c. Line. To(xmid, c. Clip. Rect. Bottom);
ПРОЦЕДУРИ і ФУНКЦІЇ ПРОГРАМИ // Побудова графіка функції x : = a; y : = f(x); c. Move. To(xmid+round(sx*x), ymidround(sy*y)); while x<=b do begin y : = f(x); c. Line. To(xmid+round(sx*x), ymidround(sy*y)); x : = x + h; end;
ПОБУДОВА ГРАФІКІВ ФУНКЦІЙ // Задання функції, графік якої будується Function f(x: real): real; Begin Result : = sqrt(abs(x)); End; // Обробник кнопки procedure TForm 1. Button 1 Click(Sender: TObject); begin Draw. Graph (f, -5, 5, Image 1. Canvas); end;
Анімація Під анімацією розуміють переміщення та зміна розмірів різних зображень на екрані. Послідовність дій: • Вивести зображення на екран. • Зробити незначну затримку. • Витерти зображення. • Вивести зображення із деяким зміщенням.
ПРИКЛАД procedure TForm 1. Button 1 Click(Sender: TObject); label 10; const br=30; bc=cl. Black; var bx, by: integer; i: longint; begin bx: =Form 1. Client. Width div 2; by: =Form 1. Client. Height-br; 10: if bx>(Form 1. Client. Width+br) then exit;
with Canvas do begin Pen. Color: =Form 1. Color; Brush. Color: =Form 1. Color; Ellipse(bx-br, by-br, bx+br, by+br); end; bx: =bx+1;
with Form 1. Canvas do begin Pen. Color: =Form 1. Color; Brush. Color: =Form 1. Color; Ellipse(bx-br, by-br, bx+br, by+br); end; for I : = 1 to 15000000 do; goto 10; end;
Анімація Використаємо бітові зображення для анімації: переміщення літака на фоні заводського пейзажу. Ефект переміщення малюнка створюють за рахунок періодичного перемальовування малюнка із деяким зсувом щодо колишнього положення.
Анімація • Передбачається, що перед виведення зображення у новій точці, спочатку витирається попереднє. Витирання відбувається шляхом перемальовування фонового зображення, або ж тієї частини, яка перекрита бітовим образом рухомого об’єкту.
Приклад обробників подій: implementation {$R *. dfm} var Back, bitmap, Buf : TBit. Map; // фон, малюнок, //буфер Back. Rct : TRect; // область фона, яка повинна //бути відновлена із буфера Buf. Ret: Trect; // область буфера, яка //використовується для відновлення фону x, y: integer; // біжуче положення малюнка W, H: integer; // розміри малюнка
Приклад обробників подій: procedure TForm 1. Form. Activate(Sender: TObject); begin // створити три об'єкти — бітових образи Back : = TBitmap. Create; // фон bitmap : = TBitmap. Create; //малюнок Buf : = TBitmap. Create; // буфер // завантажити і вивести фон Back. Load. From. File('factory. bmp'); Image 1. Canvas. Draw(0, 0, Back);
Приклад обробників подій: // завантажити малюнок, який //буде рухатися bitmap. Load. From. File('aplane. bm p'); // визначимо "прозорий" колір bitmap. Transparent : = True; bitmap. Trans. Parent. Color : = bitmap. canvas. pixels[1, 1];
Приклад обробників подій: // створити буфер для зберігання //копії області фону, // на яку накладається малюнок W: = bitmap. Width; H: = bitmap. Height; Buf. Width: = W; Buf. Height: =H; Buf. Palette: =Back. Palette;
Приклад обробників подій: // Для забезпечення відповідності палітр Buf. Canvas. Copy. Mode: =cm. Src. Copy; // визначимо область буфера, яка //буде використовуватися // для відновлення фону Buf. Ret: =Bounds(0, 0, W, H); //початкове положення малюнка x : = -W; y : = 20;
Приклад обробників подій: //визначимо область фону, що зберігається Back. Rct: =Bounds(x, y, W, H); Buf. Canvas. Copy. Rect(Buf. Ret, Back. Canvas, Back. R ct); end; procedure TForm 1. Form. Close(Sender: TObject; var Action: TClose. Action); begin //звільняємо пам'ять, виділену // для зберігання бітових образів Back. Free; bitmap. Free; Buf. Free; end;
Приклад обробників подій: // обрабока сигналу таймера procedure TForm 1. Timer 1 Timer(Sender: TObject); begin // відновлення фону (із буфера) знищимо рисунок Image 1. Canvas. Draw(x, y, Buf); x: =x+2; if x>Image 1. Width then x: =-W; //визначимо область фону, що зберігається Back. Rct: =Bounds(x, y, W, H);
Приклад обробників подій: // зберігаємо її копію Buf. Canvas. Copy. Rect(Buf. Ret, Back. C anvas, Back. Rct); // виведемо рисунок Image 1. Canvas. Draw(x, y, bitmap); end;
МЕТОД БАЗОВОЇ ТОЧКИ використовується при програмуванні складних зображень, що складаються з великої кількості елементів. Суть методу : 1. Вибирається деяка точка зображення, яка приймається за базову. 2. Координати решти точок відраховуються від базової точки. 3. Якщо координати точок зображення відраховувати від базової у відносних одиницях, а не в пікселах, то забезпечується можливість масштабування зображення.
МЕТОД БАЗОВОЇ ТОЧКИ
МЕТОД БАЗОВОЇ ТОЧКИ procedure Korablyk(x, y: integer; // координати базової точки color: TColor); // колір корабля const dx = 5; dy = 5; var buf: TColor; begin with form 1. canvas do begin // зберігаємо біжучий колір buf: =pen. Color; // установлюємо потрібний колір pen. Color: =color;
// малюємо корпус Move. To(x, y); Line. To(x, y-2*dy) ; Line. To (x+10*dx, y-2*dy) ; Line. To (x+11*dx, y-3*dy) ; Line. To (x+17*dx, y-3*dy) ; Line. To (x+14*dx, y) ; Line. To (x, y) ;
// надбудова Move. To(x+3*dx, y-2*dy) ; Line. To (x+4*dx, y-3*dy) ; Line. To (x+4*dx, y-4*dy) ; Line. To (x+13*dx, y-3*dy) ; Move. To(x+5*dx, y-3*dy) ; Line. To (x+9*dx, y-3*dy) ; // капітанський місток Rectangle (x+8*dx, y-4*dy, x+11*dx, y 5*dy);
// труба Rectangle (x+7*dx, y-4*dy, x+8*dx, y-7*dy) ; // ілюмінатори Ellipse (x+11*dx, y-2*dy, x+12*dx, y-1*dy) ; Ellipse (x+13*dx, y-2*dy, x+14*dx, y-1*dy) ; // щогла Move. To(x+10*dx, y-5*dy) ; Line. To(x+10*dx, y 10*dy); // оснащення канатами Move. To(x+17*dx, y-3*dy); Line. To(x+10*dx, y-10*dy); Line. To(x, y-2*dy); // відновлюємо старий колір олівця pen. Color: =buf; end;
procedure TForm 1. Form. Paint(Sender: TObject); begin x: =0; y: =200; Form 1. Color: =cl. Navy; Timer 1. Interval : = 50; end; procedure TForm 1. Timer 1 Timer(Sender: TObject); begin Korablyk(x, y, form 1. color); // витерти малюнок if x < Form 1. Client. Width then x : = x+5 else Begin // новий рейс Randomize; x : = 0; y : = Random(50) + 200; end; Korablyk(x, y, cl. White); end;
GRAFIKA_V_Turbo_Delphi_2006.ppt