:: Меню ::

Головна
Передмова
СЕРЕДОВИЩЕ РОЗРОБКИ C++ BUILDER
Початок роботи
Перший проект
ПРАКТИКУМ ПРОГРАМУВАННЯ
Графіка
Мультимедіа
Бази даних
Компонент програміста
Консольне застосування
Довідкова система
Створення настановного диска
Приклади програм
C++ Builder — короткий довідник
Книга для гостей
Контакти
Добавити у вибране

:: Друзі ::

 
Аппаратная косметика, аппаратная косметика купить, аппаратная косметика для лица.. Добавить в сравнение. Гель для зрелой кожи. G-Age-01.

:: Лічильники ::

=

 

 

 

 

 

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



Наступна проста програма показує, як можна змусити рухатися зображення, сформоване з графічних примітивів. Вікно і форма програми приведені на мал. 3.14.



Мал. 3.14. Вікно і форма програми


На поверхні форми знаходиться один-єдиний компонент Timer який використовується для генерації послідовності подій, функція обробки яких забезпечує вивід і видалення малюнка. Значок компоненту Timer знаходиться на вкладці System (мал. 3.15). Слід звернути увагу, що компонент Timer є невізуальним. Це означає, що під час роботи програми компонент в діалоговому вікні не відображається. Тому компонент Timer можна помістити в будь-яку крапку форми. Властивості компоненту Timer приведені в таблиці. 3.7.



Мал. 3.15. Значок компоненту Timer


Таблиця 3.7. Властивості компоненту Timer


Властивість

Визначає

Name

Ім'я компоненту. Використовується для доступу до властивостей компоненту

Interval

Період виникнення події OntimerЗадається в мілісекундах

Enabled

Дозвіл роботи. Вирішує (значення true) або забороняє (значення false) виникнення події Ontimer


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

У даній програмі виведення зображення виконує функція ship яка малює на поверхні форми кораблик. Як параметри функція ship отримує координати базової точки. Базова крапка (X0, Y0) визначає положення графічного об'єкту в цілому; від неї відлічуються координати графічних примітивів, створюючих об'єкт (мал. 3.16). Координати графічних примітивів можна відлічувати від базової крапки не в пікселах, а у відносних одиницях. Такий підхід дозволяє легко виконати масштабування зображення.



Мал. 3.16. Базова крапка (х0, у0) визначає положення об'єкту


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

Фенкциі обробки події Ontimer фенкция Ship і функція Formcreateщо забезпечує налаштування таймера, приведені в лістингу 3.6

 Лістинг 3.6. Проста мультиплікація

int х = -68, у = 50; // початкове положення базової крапки
// малює на поверхні форми кораблик 
void __fastcall Tforml::ship(int x, int у)
 {
intdx=4,dy=4; // крок сітки
 // корпус і надбудову малюватимемо
// за допомогою методу Polygon
Tpoint pi[7];  // координати точок корпусу
Tpoint p2[8];  // координати точок надбудови
Tcolor pc,bc; // поточний колір олівця і кисті
// збережемо поточний колір олівця і кисті 
рс = Canvas->pen->color; 
be = Canvas->brush->color;
// встановимо потрібний колір олівця і кисті 
Canvas->pen->color = clblack; 
Canvas->brush->color = clwhite;
// малюємо ... 11 корпус
pl[0].x = x;        pl[0].y = у;
pl[l].x=x;          pl[l].y = y-2*dy;
pl[2].x = x+10*dx;  pi[2].у = y-2*dy;
pl[3].x = x+ll*dx;  pl[3].y = y-3*dy;
pl[4]-х = x+17*dx;  pi[4].у =y-3*dy;
pl[5].x = x+14*dx;  pi[5].у =y;
pl[6].x = x;        pl[6].y =y; 
Canvas->polygon(pl,6);
// надбудова                         
p2[0].x = x+3*dx;     p2[0].y = y-2*dy;
p2[l].x = x+4*dx;     p2[l].y = y-3*dy;
р2[2].х = x+4*dx;     p2[2].y = y-4*dy;
р2[3].х = x+13*dx;    p2[3].y = y-4*dy;
р2[4].х = x+13*dx;    p2[4].y = y-3*dy;
р2[5].х = x+ll*dx;    p2[5].y = y-3*dy;
р2[6].х = x+10*dx;    p2[6].y = y-2*dy;
р2[7].х = x+3*dx;     p2[7].y = y-2*dy; 
Canvas->polygon(p2,7);
Canvas->moveto(x+5*dx,y-3*dy); 
Canvas->lineto(x+9*dx,y-3*dy);
// капітановий місток
Canvas->rectangle(x+8*dx,y-4*dy,x+ll*dx,y-5*dy);
// труба
Canvas->rectangle(x+7*dx,y-4*dy,x+8*dx,y-7*dy);
// ілюмінатори
Canvas->ellipse(x+ll*dx,y-2*dy,x+12*dx,y-l*dy);
Canvas->ellipse(x+13*dx,y-2*dy,x+14*dx,y-l*dy);
// щогла
Canvas->moveto(x+10*dx,y-5*dy);
Canvas->lineto(x+10*dx,y-10*dy);
// оснащення
Canvas->pen->color = clwhite; 
Canvas->moveto(x+17*dx,y-3*dy); 
Canvas->lineto(x+10*dx, y-10*dy); 
Canvas->lineto(x,y-2*dy);
// відновимо колір олівця і кисті 
Canvas->pen->color = рс; 
Canvas->brush->color = be; }
// обробка події Ontimer
void__fastcall Tforml::timerltimer(Tobject *Sender)
{
// стерти кораблик — закрасити кольором, співпадаючим
// з кольором фону (форми)
Canvas->brush->color = Forml->color;
Canvas->fillrect(Rect(x-1,y+l,x+68,y-40));
// обчислити координати базової точки х+=3;
if (x > Clientwidth)
{
// кораблик  "поплив" за праву межу форми
х= -70;   //  щоб кораблик  "випливав" з-за лівого кордону форми
y=random(Forml->clientheight); }
// намалювати кораблик на новому місці Ship(х, у); )
// обробка події Oncreate для форми
void__fastcall Tforml::formcreate(Tobject *Sender)
{
/*   Таймер можна настроїти під час розробки програми
(в процесі створення форми)  або під час роботи програми. */
// налаштування і запуск таймера
Timerl->interval = 100;   // період події Ontimer —0.1  сек. 
Timerl->enabled = true;   // пуск таймера 
}

 


Настоящие умелицы - путаны Владивостока ждут вас. | Отвязные проститутки Владивостока приедут в любое время. | Очаровательные проститутки для ублажения ваших низменных желаний. Вот самые зрелые.
x

:: Наша кнопка ::

Отримати код:

Підтримайте наш сайт і розмістіть нашу кнопку на своєму ресурсі.


:: Реклама ::


:: Посилання ::

-


 

 

 


Copyright by Zvircom © 2009