Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторна робота 10.doc
Скачиваний:
0
Добавлен:
30.11.2018
Размер:
224.77 Кб
Скачать
  1. Запрограмувати обробку подій OnPaint та OnResize для форми.

void__fastoall TForml::FormPaint(TObject *Sender)

{

Grafik();

}

void __fastcall TForml::FormResize(TObject *Sender)

{

TRect ret = Rect(0,0,Ciientwidth,CiientHeight);

Canvas->FillRect(ret); // стерти Grafik();

}

Рис. 2. Графік, побудований по точках

Задача 2. Вивести ілюстрацію, яка заходиться у файлі з розширенням bmp, jpg или ico, за допомогою компоненти image. Виконати масштабування ілюстрації у відповідності з реальними розмірами компоненти.

  1. Створити проект для перегляду ілюстрацій як на рисунку 3

Рис. 3. Діалогове вікно програми Перегляд ілюстрацій

  1. Підключити файл заголовків jpeg.hpp для відображення JPG-файлів та FileCtrl.hpp - для доступу до функції SelectDirectory.

  2. Задати глобальні змінні

AnsiString aPath; // каталог, в якому знаходиться файл

TSearchRec aSearchRec; // результат пошуку файла

  1. Запрограмувати подію OnCreate для форми

void __fastcall TForml::FormCreate(TObject *Sender)

{

aPath = ""; // поточний каталог, з якого запущена програма

Imagel->AutoSize = false;

Imagel->Proportional = true;

Button2->Enabled = false;

FirstPicture(); // показує картинку, яка є в каталозі

}

  1. Запрограмувати кнопку з назвою Каталог

void __fastcall TForml::ButtonlClick(TObject *Sender)

{

if (SelectDirectory("Виберіть каталог, в якому знаходиться файл", "",aPath) != 0)

{aPath = aPath + "\\";

FirstPicture(}; // вивести картинку

}

}

  1. Створити функції FirstPicture і NextPicture для виведення першої та наступних картинок

void TForml::FirstPicture()

{

Imagel->Visible = false; // скрыть компонент Imagel

Button2->Enabled = false; // кнопка Дальше недоступна

Labell->Caption = "";

if ( FindFirst(aPath+ "*.jpg", faAnyFile, aSearchRec) == 0)

{

Imagel->Picture->LoadFromFile(aPath+aSearchRec.Name);

Imagel->Visible = true;

Labell->Caption = aSearchRec.Name;

if ( FindNext(aSearchRec) == 0) // найти след, иллюстрацию

{

// иллюстрация есть

Button2->Enabled = true; // теперь кнопка Дальше доступна

} }

}

Задача 3.

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

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

Створити фоновий рисунок як багатократне виведення бітового зображення на поверхню форми.

Реалізувати програму «Політ над містом», у якій бітові зображення фону та об’єкта завантажуються із файлу. Картинки бітових зображень підготовити за допомогою графічного редактора.

Теоретичні відомості

У програмі битове зображення — це об’єкт типу TBitmap. Деякі властивості об’єкта TBitmap наведені в таблиці. 5.

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

Graphics: :TBitmap *Plane = new Graphics: :TBititiap();

Plane->LoadFromFile("plane.bmp");

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

Таблиця 5. Властивості об’єкта 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.

Завантаження і виведення бітових зображень на поверхню форми виконує функція обробки події onPaint. Інструкція застосування методу CopyRect в загальному вигляді наступна:

Canvasl->CopyRect(Область1, Canvas2, Область2)

де:

  • Canvas1 — поверхня, на яку виконується копіювання;

  • Canvas2| — поверхня, з якої виконується копіювання;

  • Область1 — структура типу TRect, яка задає положення і розмір області, куди виконується копіювання;

  • Область2 — структура типу TRect, яка задає положення і розмір області, звідки виконується копіювання.

Функції Rect потрібно передати в якості параметрів координати лівого верхнього і правого нижнього кута області, функції Bounds — координати лівого верхнього кута і розмір області. Наприклад, якщо потрібно визначити прямокутну область, то це можно зробити так:

ret = Rect(x1,y1,x2,y2) або так: ret = Bounds(x1,y1,w,h)

де x1, y1 — координати лівого верхнього кута області; х2, у2 — координати правого нижнього кута області; w і h — ширина і висота області.