:: Меню ::

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

:: Друзі ::

 
Мы поможем Вам обмануть «Антиплагиат» быстро Мы настолько уверены в своём методе, потому что каждый второй наш клиент — это тот, кто уже обращался за повышением уникальности к кому-то из наших конкурентов, но его работа не прошла проверку. Как обмануть «Антиплагиат»? Наш метод не даёт осечек.

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

=

 

 

 

 

 

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



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

Як і в попередній програмі, ефект переміщення об'єкту (картинки) досягається за рахунок періодичного перемальовування картинки з деяким зсувом щодо її колишнього положення. Перед виведенням картинки в новій крапці попереднє зображення має бути видалене, а фоновий малюнок, який був перекритий, — відновлений. Видалити (стерти) картинку і одночасно відновити фон можна шляхом перемальовування всієї фонової картинки або тільки тій її частині, яка була перекрита об'єктом. У даній програмі використовується другий підхід. Зображення об'єкту виводиться застосуванням методу Draw до властивості canvas форми, а стирається шляхом копіювання (метод Copyrect) потрібній частині фону з буфера в бітовий образ, відповідний поверхні форми.

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



Мал. 3.17. Форма програми "Політ над містом"


Лістинг 3.7. Політ над містом

void _fastcall Tforml::formcreate(Tobject *Sender)
 
{
// завантажити фоновий малюнок з bmp-файла 
back = new Graphics::tbitmap(); 
back->loadfromfile("factory.bmp");
// встановити розмір клієнтської (робочою) області форми 
 // відповідно до розміру фонового малюнка 
Glientwidth = back->width; 
Clientheight = back->height;
// завантажити картинку 
sprite = new Graphics::tbitmap(); 
sprite->loadfromfile("aplane.bmp"); 
sprite->transparent = true;
// початкове положення літака
x=-20; // щоб літак "вилітав" з-за лівого кордону вікна У=20; 
}
void _fastcall Tforml::formpaint(Tobject *Sender) 
{
Canvas->draw(0,0,back);    //фон
Canvas->draw(x,у,sprite);  // малюнок }
void__fastoall Tforml::timerltimer(Tobject *Sender)
{
Trect badrect; // положення і розмір області фону 
// яку треба відновити
badrect = Rect(x,y,x+sprite->width,y+sprite->height);
// стерти літак (відновити "зіпсований" фон) 
Canvas->copyrect(badrect,back->canvas,badrect);
// обчислимо нові координати спрайту (картинки)
х +=2;
if (х > Clientwidth)
{
// літак відлетів за праву межу форми
// змінимо висоту і швидкість польоту
х = -20;
у = random(Clientheight —30);     // висота польоту"
// швидкість польоту  визначається періодом виникнення
// події On Timer,  який,  у свою чергу,  залежить
// від значення властивості  Interval
Timerl->interval = random(20)   +  10;   
// швидкість   "польоту" міняється
// від 10 до 29 }
Canvas->draw(х,у,sprite); 
}

Для зберігання бітових образів (картинок) фону і літака використовуються два об'єкти типу Tbitmap які створює функція Tformi:: Formcreate (оголошення цих об'єктів треба помістити в заголовний файл проекту). Ця ж функція завантажує з файлів картинки фону (factory.bmp) і літака (aplane.bmp).

Відновлення фону виконується за допомогою методу copyrect який дозволяє виконати копіювання прямокутного фрагмента одного бітового образу в іншій. Об'єкт, до якого застосовується метод copyrect є приймачем копії бітового образу. Як параметри методу передаються: координати і розмір області, куди має бути виконане копіювання; поверхня, з якою має бути виконане копіювання; положення і розмір копійованої області. Інформація про положення і розмір відновлюваної (копійованої на поверхню форми) області фону знаходиться в структурі badrect типу Trect.

Слід звернути увагу на те, що початкове значення змінної х, яка визначає положення лівої верхньої точки бітового образу (рухомої картинки) — негативне число, рівне ширині бітового образу картинки. Тому на початку роботи програми літак не видно і картинка отрісовиваєтся за межею видимої області. З кожною подією OnTimer значення координати х збільшується і на екрані з'являється та частина бітового образу, координати якої більше нуля. Таким чином, у спостерігача створюється враження, що літак вилітає з-за лівого кордону вікна.

 


Тест драйв т6 каравелла - фольксваген каравелла 2016 тест драйв. индивидуалкикутузовском проспекте Москва на http://devochka1.com
x

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

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

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


:: Реклама ::


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

-


 

 

 


Copyright by Zvircom © 2009