:: Меню ::

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

:: Друзі ::

 

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

=

 

 

 

 

 

Бітові образи



Для формування складних зображень використовують бітові образи. Бітовий образ — це, як правило, невелика картинка, яка знаходиться в пам'яті комп'ютера.

Сформувати бітовий образ можна шляхом завантаження з bmp-файла або з ресурсу, а також шляхом копіювання фрагмента з іншого бітового образу, у тому числі і з поверхні форми.

Картинку бітового образу (іноді говорять просто "бітовий образ") можна підготувати за допомогою графічного редактора або, якщо передбачається, що бітовий образ буде завантажений з ресурсу програми, — за допомогою редактора ресурсів (наприклад, Borland Resource Workshop). У останньому випадку треба створити файл ресурсів і помістити в нього бітовий образ. Файл ресурсів можна створити і за допомогою утиліти Image Editor.

У програмі бітовий образ — це об'єкт типу Tbitmap. Деякі властивості об'єкту Tbitmap приведені в таблиці. 3.6.

Завантаження картинки з файлу забезпечує метод Loadfromfile якому як параметр передається ім'я bmp-файла. Наприклад, наступний фрагмент коди забезпечує створення і завантаження бітового образу з файлу.

Graphics: :TBitmap *Plane = new Graphics: :TBititiap() ; 
Plane->loadfromfile("plane.bmp");

В результаті виконання приведеного вище фрагмента, бітовий образ Plane є зображенням літака (передбачається, що у файлі plane.bmp знаходиться зображення літака).

Таблиця 3.6. Властивості об'єкту Tbitmap


Властивість

Опис

Height, Width

Розмір (ширина, висота) бітового образу. Значення властивостей відповідають розміру завантаженою з файлу (метод Loadfromfile) або ресурсу (метод Loadfromresourceld або Loadfromresourcename) картинки

Empty

Ознака того, що картинка в бітовий образ не завантажена (true)

Transparent

Встановлює (true) режим використання "прозорого" кольору. При виведенні бітового образу методом Draw елементи картинки, колір яких збігається з кольором Transparentcolor не виводяться. За умовчанням значення Transparentcolor визначає колір лівого нижнього піксела

Transparentcolor

Задає прозорий колір. Елементи картинки, забарвлені цим кольором, методом Draw не виводяться

Canvas

Поверхня бітового образу, на якій можна малювати точно так, як і на поверхні форми або компоненту image


Після того, як бітовий образ сформований (завантажений з файлу або з ресурсу), його можна вивести, наприклад, на поверхню форми або компоненту image. Зробити це можна, застосувавши метод Draw до властивості Canvas . Як параметри методу Draw треба передати координати точки, від якої буде виведений бітовий образ. Наприклад, оператор

Canvas->draw(10,20,plane);

виводить на поверхню форми бітовий образ plane — зображення літака.

Якщо перед застосуванням методу Draw властивості Transparent бітового образу привласнити значення true то фрагменти малюнка, колір яких збігається з кольором лівої нижньої точки малюнка, не будуть виведені. Такий прийом використовується для створення ефекту прозорого фону. "Прозорий" колір можна задати і примусово, привласнивши відповідне значення властивості Transparentcolor.

Наступна програма демонструє роботу з бітовими образами. Після запуску програми в її вікні з'являється зображення неба і двох літаків (мал. 3.12). І небо, і літаки — це бітові образи, завантажені з файлів під час роботи програми. Завантаження і виведення бітових образів на поверхню форми виконує функція обробки події onpaint текст якої приведений в лістингу 3.3. Біле поле навколо лівого літака показує дійсний розмір бітового образу Plane. Білого поля навколо правого літака немає, оскільки перш ніж вивести бітовий образ другий раз, властивості Transparent було привласнено значення true.



Мал. 3.12. Привласнивши властивості Transparent значення true, можна приховати фон


Лістинг 3.3. Завантаження і виведення бітових образів на поверхню форми 

void __fastcall Tforml::formpaint(Tobject *Sender) 
{
// бітові образи: небо і літак
Graphics::tbitmap *sky = new Graphics::tbitmap();
Graphics::tbitmap *plane = new Graphics::tbitmap();
sky->loadfromfile("sky.bmp"); 
plane->loadfromfile("plane.bmp");
Canvas->draw(0,0,sky);    // фон - небо 
Canvas->draw(20,20,plane); // лівий літак
plane-xtransparent = true;
/* тепер елементи малюнка, колір яких збігається
з кольором лівої нижньої точки бітового образу
не відображаються */ 
Canvas->draw(120,20,plane); // правий літак
// знищити об'єкти 
sky->graphics::-tbitmap(); 
plane->graphics::-tbitmap(); 
}


Невеликі за розміром бітові образи часто використовують при формуванні фонових малюнків за принципом кахляної плитки (мал. 3.13).



Мал. 3.13. Фоновий малюнок і бітовий образ-плитка, з якого він складений


Наступна програма показує, як можна отримати фоновий малюнок шляхом багатократного виведення бітового образу на поверхню форми. Формування фонового малюнка, багатократне виведення бітового образу на поверхню форми виконує функція Background. Її оголошення (прототип), а також оголошення бітового образу (об'єкту типу Tbitmap) треба помістити в секцію private оголошення класу форми (лістинг 3.4), яка знаходиться в заголовному файлі. Створення бітового образу і завантаження картинки з файлу виконує функція обробки події oncreate. Функція обробки події Onpaint шляхом виклику функції Background забезпечує виведення фонового малюнка на поверхню форми (лістинг 3.5).

Лістинг 3.4. Оголошення бітового образу і функції Background 

class Tforml : public Tform
{
_published:
void__fasteal1 Formcreate(Tobject *Sender);
void__fastcall Formpaint(Tobject *Sender);
void__fastcall Formresize(Tobject *Sender);
private:
Graphics::tbitmap *back;     // елемент фонового малюнка
void __fastcall Background(); // формує фоновий малюнок на
// поверхні форми public:
_fastcall Tforml(Tcomponent* Owner);
};

Лістинг 3.5. Функції, забезпечуюче формування і виведення фонового малюнка

// обробка  події Oncreate
void __fastcall Tforml::formcreate(Tobject *Sender)
{
back = new Graphics::tbitmap(); // створити об'єкт — бітовий образ
// завантажити картинку
try // в процесі завантаження картинки можливі помилки 
{
Forml->back->loadfromfile("Legal.bmp"); 
}
catch (Efopenerror &e) 
{

return; 
}
 }
// формує фоновий малюнок
void __fastcall Tforml::background()
{
intx=0,y=0; // координати лівого верхнього кута бітового образу
if ( back->empty) // бітовий образ не був завантажений 
return;
do 
{ 
do
 {
Canvas->draw(x,y,back); x += back->width; 
}
while (x < Clientwidth); x = 0;
у4= back->height; 
}
while (у < Clientheight); 
}
// обробка події Onpaint
void __fastcall Tforml::formpaint(Tobject *Sender)
{
Background(); // відновити фоновий малюнок 
}

 


Бегите и смотрите: Ремонт
x

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

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

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


:: Реклама ::


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

-


 

 

 


Copyright by Zvircom © 2009