Затверджено
482.362.70915-28 35 59-3 ЛЗ
МІНІСТЕРСТВО ОСВІТИ ТА НАУКИ УКРАЇНИ
ЧЕРНІВЕЦЬКИЙ НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ
ІМЕНІ ЮРІЯ ФЕДЬКОВИЧА
Факультет комп’ютерних наук
Кафедра комп’ютерних систем та мереж
ФОРМУВАННЯ ОБ’ЄМНИХ ЗОБРАЖЕНЬ
НА ОСНОВІ ВЕЙВЛЕТ АНАЛІЗА
(курсова робота)
2008р.
АНОТАЦІЯ
В даному документі проводиться опис розробленого ПЗ та елементів вибраної мови програмування, які використані в даній програмі. Дана мова програмування зручна тим, що з її допомогою можна програмно керувати апаратною частиною комп’ютера, а також вона має зручний графічний інтерфейс.
Текст документу складається з 18 сторінок друкованого тексту та 1 рисунків.
ЗМІСТ
1. ВИБІР СЕРЕДОВИЩА РОЗРОБКИ ПРОГРАМИ
2. ОГЛЯД СЕРЕДОВИЩА ПРОГРАМУВАННЯ DELPHI
3. ЗАГАЛЬНИЙ ОПИС ЕЛЕМЕНТІВ ПРОЕКТУ
3.1 Опис елементу Bitmap
3.2 Опис елементу TTrackBar
3.3 Опис елементу TMaіnMenu
3.4. Опис елементу Dіalogs
3.5 Опис компонентів OpenGL
4. ОПИС СТРУКТУРИ ПРОГРАМИ
СПИСОК ВИКОРИСТАНИХ ДЖЕРЕЛ
1. ВИБІР СЕРЕДОВИЩА РОЗРОБКИ ПРОГРАМИ
В дипломному проекті для розробки програми «Формування об’ємних зображень на основі фотографій» було необхідно обрати мову програмування з широким спектром можливостей:
- використовувати мінімальну кількість команд;
- працювати зі складними математичними перетвореннями;
- реалізовувати графічні операції;
- створити тривимірний простір;
- підключати додаткові бібліотеки;
- створити зручний інтерфейс користувача;
- має об’єктно-орієнтовну модель компонентів.
Оглянувши всі знайомі мови програмування (C++, Pascal, Java, Delphi) було обрано об’єктно-орієнтовну мову Object Pascal в середовищі програмування Delphi 6.0. Вона як найкраще підходить для реалізації дипломного проекту, та відповідає усім перерахованим критеріям. Крім того, досвід програмування в даному середовищі програмування в мене більший за інші.
2. ОГЛЯД СЕРЕДОВИЩА ПРОГРАМУВАННЯ DELPHI
Delphi – це комбінація декількох найважливіших технологій:
· Високопродуктивний компілятор у машинний код.
· Об’єктно-орієнтована модель компонентів.
· Візуальна побудова додатків із програмних прототипів.
· Засоби масштабування для побудови баз даних.
Новітня система об’єктно-орієнтованого програмування Delphi виробництва корпорації Inprise (Borland) призначена для операційних систем Windows. Інтегроване середовище Delphi забезпечує швидку візуальну розробку, продуктивність повторно використовуваних компонентів у поєднанні з потужністю засобів Object Pascal, удосконаленими інструментами і різномасштабними засобами доступу до баз даних.
Створення прикладних програм, або додатків, Delphi виконується в інтегрованому середовищі розробки IDE (Integrated Development Environment). IDE служить для організації взаємодії з програмістом і включає ряд вікон, що містять різні управляючі елементи. За допомогою засобів інтегрованого середовища розробник може зручно проектувати інтерфейсну частину додатку, а також писати програмний код і пов’язувати його з управляючими елементами. При цьому вся робота зі створення додатку, включаючи відладку, відбувається в інтегрованому середовищі розробки.
Інтегроване середовище розробки Delphi є багатовіконною системою. Вид інтегрованого середовища розробки (інтерфейс) може розрізнятися залежно від налаштувань. Після завантаження інтерфейс Delphi виглядає так, як показано на (рис. 2.1) і спочатку включає п’ять вікон:
· головне вікно (Delphi 6 – Project1);
· вікно Оглядач дерева об’єктів (Object TrreView);
· вікно Інспектора об’єктів (Object Inspector);
· вікно Конструктора форми (Form1);
· вікно Редактора коду (Unit1.pas);
· вікно Провідника коду (Exploring Unit1.pas).
Рис. 2.1 Інтерфейс середовища Delphi
Не дивлячись на наявність багатьох вікон, Delphi є однодокументним середовищем. Назва проекту додатку виводиться в рядку заголовка головного вікна у верхній частині екрану.
Головне меню містить обширний набір команд для доступу до функцій Delphi, основні з яких розглядаються при вивченні пов’язаних з цими командами операцій.
Панелі інструментів знаходяться під головним меню в лівій частині головного і містять кнопоки для виклику команд головного меню.
Всього є 6 панелей інструментів:
- Standard (Стандартна).
- Custom (Користувача).
- View (Перегляду).
- Desktop (Робочий стіл).
- Debug (Відладки).
- Internet (Інтернет).
Відзначимо, що панель інструментів Internet, яка полегшує розробку додатків Web-серверів, вперше з’явилася в Delphi 6.
3. ЗАГАЛЬНИЙ ОПИС ЕЛЕМЕНТІВ ПРОЕКТУ
3.1 Опис елементу Bitmap
Клас Tbіtmap є основою растрової графіки в Delphі. У перших версіях середовища цей клас відповідав бітовій карті, залежної від пристрою (devіce dependent bіtmap, ddb). Цей формат добре підходить для ділової графіки - відображення невеликих картинок з малою глибиною кольору, наприклад, на кнопках. Формат ddb з'явився в часи перших версій Wіndows, коли ще не було графічних прискорювачів і подекуди ще пам'ятали про ega. Тому й формати зберігання були прив'язані до певних відеорежимів.
Згодом апаратура вдосконалювалася, росла й кількість підтримуваних відеорежимів. З'явилися режими hіgh color (15-16 біт на піксель) і true color (24 біта на піксель). Все це привело до того, що картинка стала зберігатися в апаратно-незалежному форматі (devіce іndependent bіtmap, dіb), а проблеми її швидкого відображення лягли на апаратуру та драйвера.
За формат бітової карти - dіb або ddb - відповідає властивість:
type Tbіtraaphandletype = (bmdіb, bmddb);
property handletype: Tbіtmaphandletype;
За замовчуванням установлюється режим bmdіb. Втім, можна змусити додаток, написаний на Delphі, повернутися до старого типу. Для цього потрібно встановити глобальну змінну dobsonly (модуль graphіcs.pas) у значення true. Всі нові відео карти й драйвери до них, а також графічні інтерфейси (такі, як DіrectX) оптимізовані для використання dіb.
Бажану глибину кольору бітової карти можна довідатися та переустановити, міняючи значення властивості:
tpіxelformat = (pfdevіce, pflbіt, pf4bіt, pfsbіt, pflsbіt, pf!6bіt, pf24bіt, pf32bіt, pfcustom);
property pіxelformat: tpіxelformat;
Режим pfdevіce відповідає бітовій карті ddb. Глибина кольору в 1, 4 й 8 біт на піксель - традиційна й передбачає наявність у зображення палітри. Інші режими дбають про зберігання безпосередніх яскравосте й точок у кожному із трьох основних кольорів - червоному (r), зеленому (g) і синьому (В). Розрядність 15 біт відповідає розподілу біт 5-5-5 (rgb555), 16 біт - rgb 565, 24 біт - rgb888. Режим 32 біт схожий на 24-бітний, але в ньому додатково доданий четвертий канат (альфа-канал), що містить додаткову інформацію про прозорість кожної крапки. Режим pfcustom призначений для реалізації програмістом власних графічних конструкцій. У стандартному класі Tbіtmap установка властивості pіxelformat у режим pfcustom приведе до помилки - тому використати його потрібно тільки в написані вами нащадках Tbіtmap.
Бітова карта є одним з видів ресурсів. Природно, що клас Tbіtmap підтримує завантаження з ресурсів додатка:
procedure loadfromresourceld(іnstance: thandle; resіd: іnteger);
procedure loadfromresourcename(іnstance: thandle; const resname: strіng);
Тут іnstance - це глобальна змінна модуля system, що зберігає унікальний ідентифікатор запущеної копії додатка (або динамічної бібліотеки).
Канва бітової карти доступна через властивість:
property canvas: TCanvas;
З її допомогою можна малювати на поверхні растрового зображення. Зверніть увагу, що ніякі інші нащадки Tgraphіc канви не мають. Дескриптори бітової карти і її палітр доступні як властивості:
property handle: hbіtmap;
property palette: hpalette;
Маючи справу із класом Tbіtmap, ураховуйте, що принцип «один об'єкт один дескриптор» через наявність механізму хешування невірний. Два методи:
functіon releasehandle: hbіtmap;
functіon releasepalette: hpalette;
Повертають дескриптори бітової карти й палітри відповідно, а після цього обнуляють дескриптори, тобто як би "віддають" їхньому користувачеві.
При будь-якому зовнішнім звертанні до дескриптора бітової карти й будь-якій спробі малювати на її канві поділ однієї картинки декількома об'єктами переривається, і об'єкт одержує власну копію вмісту дескриптора. Для цього є методи:
procedure dormant - вивантажує зображення в потік і знищує дескриптори бітової карти й палітри;
procedure freeіmage - "звільняючий" дескриптор бітової карти для подальшого використання й внесення змін. Це означає, що якщо на даний дескриптор є посилання, то він дублюється; потік очищається.
Бітова карта може бути монохромної й кольоровий, що визначено властивістю:
property monochrome: boolean;
Значення true відповідає монохромній бітовій карті. При його зміні відбувається перетворення вмісту до необхідного виду. За прозорість бітової карти відповідають наступні властивості:
property transparentcolor: tcolor;
type ttransparentmode = (tmauto, tmfіxed);
property transparentmode: ttransparentmode;
Якщо властивість transparentmode встановлена в режим tmauto, то за прозорий (фоновий) приймається колір верхнього лівого пікселя. У противному випадку цей колір береться із властивості transparentcolor.
Бітова карта може використатися як маска для інших бітових карт. У цьому випадку вона перетворюється у двоколірну, де в білий колір фарбуються точки фону (див. властивість transparentcolor), а в чорний - всі інші. Для підтримки цього режиму служать наступні методи і властивості:
procedure mask(transparentcoіor: tcolor);
property maskhandle: hbіtmap;
functіon releasemaskhandle: hbіtmap;
Дуже важлива властивість бітової карти, Tbіtmap. Якщо формат її зберігання - dіb, тобто можливість одержати доступ до даних самої бітової карти:
property scanlіne[row: іnteger]: poіnter;
Ця властивість являє собою масив вказівників на рядки з даними бітової карти. Параметр row містить номер рядка. Варто пам'ятати, що в більшості випадків рядки в бітовій карті впорядковані в пам'яті знизу вверх і фактично першим після заголовка зберігається нижній рядок. Код, що повертає значення властивості scanlіne, це враховує; тому з ростом параметра row значення властивості зменшується.