Будь умным!


У вас вопросы?
У нас ответы:) SamZan.net

Тема Графіка в C Builder Мета

Работа добавлена на сайт samzan.net:


Лабораторна  робота 9

Тема. Графіка в C++ Builder

Мета. Навчитись розробляти програми, які працюють з графікою; створювати картинки за допомогою графічних примітивів, або ілюстрацій, створених в графічному редакторі

Завдання до роботи

Задача 1. Побудова графіка функції. Використовуючи властивість Pixels, побудувати графік функції у = 2 sin(x) e*/5. Границі діапазону зміни аргумента функції є вхідними даними. Діапазон зміни значень функції повинен обчислюватися під час роботи програми. На основі цих даних програма обчислює масштаб, який дозволяє побудувати графік таким чином, щоб він займав всю область форми, призначену для виведення графіка. Для побудови графіка використати всю доступну область форми, причому якщо під час работи програми користувач змінить размір вікна, то графік повинен виводитись заново з врахуванням реальних размірів вікна.

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

Задача 3.

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

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

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

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

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

Графічні примітиви

Графічні зображення в C++ Builder можна виводити на поверхню форми (або компоненти image), якій відповідає властивість canvas. Для, того щоб на поверхні форми або компоненти image з'явилася лінія, коло, прямокутник або інший графічний елемент (примітив), необхідно для властивості Canvas застосувати відповідний метод (таблиця 1).

Наприклад, оператор Forml->Canvas->Rectangle(10,10,50,50); рисує на поверхні форми прямокутник.

Таблиця 1. Методи для рисування графічних примітивів

Метод

Опис

LineTo(x,y)

Малює лінію із поточної точки в точку із вказаними координатами

Rectangle (x1,y1,x2, y2)

Малює прямокутник, де x1, y1 і х2, у2 — координати лівого верхнього і правого нижнього кутів прямокутника. Колір межі і внутрішньої області прямокутника можуть бути різними. Замість четирьох параметрів — координат двох діагональних кутів прямокутника — методу Rectangle можно передавати один параметр — структуру типу TRect. Наступний фрагмент коду демонструє використання структури Trect:

TRect ret; // прямокутна область

ret.Top = 10;

ret.Left = 10;

ret.Bottom = 50;

ret.Right = 50;

Canvas->Rectangle(ret); // намалювати прямокуник

FillRect (x1,y1,x2,y2)

Малює зафарбований прямокутник, де x1, y1, х2, у2 — визначають координати діагональних кутів

FrameRect(x1,y1,x2,y2)

Малює контур прямокутника, x1, y1, х2, у2 — визначають координати діагональних кутів

RounRect (x1,y1,x2,y2,x3,y3)

Малює прямокутник із заокругленими кутами

Ellipse (x1,y1,x2,y2)

Малює еліпс або коло, де x1, y1, х2, у2 — координати прямокутника, всередині якого малюється еліпс або, якщо прямокутник є квадратом, коло

Polyline (points, n)

Малює ламану лінію, points— масив типу TPoint. Кожним елементом масиву є запис, полями якого є координати точки перегину ламаної; n — кількість ланок ламаної. Метод Polyline малює ламану лінію, послідовно сполучаючи прямими відрізками крапки, координати яких знаходяться в масиві: першу з другою, другу з третьою, третю з четвертою і так далі

MoveTo(х,y)

Переміщає карандаш в потрібну точку графічої поверхні

Polygon(p,n)

Малює багатокутник, де р — масив записів типу TPoint, який містить координати вершин багатокутника; n — кількість вершин.

Arc(xl,yl,х2,у2,х3,у3, х4,у4)

Метод рисує дугу — частину еліпса (кола). Параметри x1, y1, х2, у2 визначають еліпс (коло), частиною якого є дуга. Параметри х3 і у3 задають початкову, а х4 і у4 — кінцеву точку дуги. Початкова (концева) точка дуги — це точка перетину границі еліпса і прямої, проведеної із центру еліпса в точку з координатами х3 і у3(х4, у4). Метод малює дугу проти часової стрілки

Pie(x1,y1,х2,у2,х3,у3,х4,у4)

Малює сектор еліпса або круга. Параметри x1, y1, x2, y2 визначають еліпс (круг), частиною якого є сектор; х3, у3, х4 і у4 — прямі — границі сектора. Початкова точка границі співпадає з центром еліпса. Сектор вирізається проти часової стрілки віссю прямої, заданої точкою з координатами (х3, у3), до прямої, заданої точкою| з координатами (х4, у4)

Методи виводу графічних примітивів розглядають властивість canvas як деяке абстрактне полотно, на якому можна малювати (Canvas перекладається як "поверхня" для малювання). Полотно складається із окремих точок — пікселів. Положення піксел на поверхні форми характеризується горизонтальною (X) і вертикальною (Y) координатами (рис. 1).

Рис. 1. Координати точок поверхні форми

Методи рисування графічних примітивів забезпечують лише рисування. Вигляд графічного елементу визначає властивість Реn(карандаш) і Brush (пензель) тієї поверхні (Canvas), на якій рисує метод.

Олівець і пензель є властивостями  об’єкта Canvas, в свою чергу є об’єктами Реn і Brush (таблиця 2, таблиця 3).

Таблиця 2. Властивості об’єкта Реn (олівець)

Властивість

Опис

Color

Колір лінії

Width

Товщину лінії (задається в пикселях)

Style

Вид лінії (psSolid—суцільна; psDash—пунктирна, довгі штрихи; psDot — пунктирна, короткі штрихи; psDashDot — пунктирна, чергування довгого і короткого штрихів; psDashDotDot — пунктирна, чергування одного довгого і двох коротких штрихів; psClear — лінія не відображується (використовується, якщо не треба зображати межу області — наприклад, прямокутника)

Таблиця 3. Властивості об’єекта Brush (кисть)

Властивість

Опис

Color

Колір зафарбовування замкнутої області

Style

Стиль заповнення області (bsSolid — суцільна заливка. Штрихування: bsHorizontal — горизонтальна; bsVertical — вертикальна; bsFDiagonal — діагональна з нахилом ліній вперед; bsBDiagonal — діагональна з нахилом ліній назад; bsCross — в клітинку; bsDiagCross — діагональна клітинка

Будь-яка картинка можуть розглядатися як сукупність графічни примітивів: точок, ліній, кіл, дуг і ін.

Текст

Виведення тексту на поверхню графічного об’єкта забезпечує метод TextOutA:

Canvas->TextOutA(x,y,TEКСТ)

Параметр ТЕКСТ задає текст. Параметри х і y визначають координати точки поверхні, в якій виконується виведення тексту.

Шрифт, який виводиться для виведення тексту, визначається значенням властивості Font відповідного об’єкта canvas. У таблиці 3 перераховані властивості об’єкта TFont.

Таблиця 3. Властивості об’єкта TFont

Властивість

Опис

Name

Назва шрифта (наприклад, Arial)

Size

Розмір шрифта в пунктах. Пункт— це одиниця вимірювання розміру шрифту, яка використовується в поліграфії. Один пункт рівний 1/72 дюйми

Style

Стиль зображення символів. Можливо: нормальним, напівжирним, курсивним, підкресленим, перекресленим. Стиль задається за допомогою наступних констант: fsBold (напівжирний), fsltalic (курсив), fsUnderline (підкреслений), fsStrikeOut (перекреслений). Властивість style є множиною, що дозволяє комбінувати необхідні стилі. Наприклад, напівжирний курсив виглядає так:
Canvas->Font->Style = TFontStyles ( ) <<fsBold<<fsUnderline

Color

Колір символів. Як значення можна використовувати константу типу TColor

Textwidth, TextHeight

Задають ширину і висоту області виведення тексту

Інколи потрібно вивести будь-який текст після повідомлення, довжина якого під час розробки невідома. В цьому випадку необхідно знати координати правої границі області виведеного тексту. Координати правої границі тексту, який виводиться методом TextOutA, можна одержати за допомогою методу PenPos.

Наступний фрагмент коду демонструє можливість виведення тексту за допомогою двох конструкцій:

Canvas->TextOutA(10,10,"Borland");

Canvas->TextOutA(Canvas->PenPos.x, Canvas->PenPos.y, "C++Builder");

Ілюстрації

Найпростіше вивести іллюстрацію, яка знаходиться у файлі з розширенням .bmp, .jpg або .ico, можна за допомогою компоненти image. Основні властивості компоненти наведені в таблиці 4.

Таблиця 4. Властивості компоненти image

Властивість

Опис

Picture

Ілюстрація, яка відображується в полі компоненти

Width, Height

Розмір компоненти. Якщо розмір компоненту менше розміру ілюстрації і значення властивостей AutoSize, Strech і Proportional рівне false, то відображується частина ілюстрації

Proportional

Ознака автоматичного масштабування картинки без спотворення. Щоб масштабування було виконане, значення властивості AutoSize має бути false

Strech

Ознака автоматичного масштабування (стиснення або розтягування) ілюстрації відповідно до реального розміру компоненти. Якщо розмір компоненти не пропорційний розміру ілюстрації, то ілюстрація буде спотворена

AutoSize

Ознака автоматичної зміни розміру компоненти відповідно до реального розміру ілюстрації

Center

Ознака визначає розташування картинки в полі компоненту по горизонталі, якщо ширина картинки менше ширини поля компоненти. Якщо значення властивості рівне false, то картинка притиснута до правої межі компоненти, якщо true — то картинка розташована по центру

Visible

Ознака вказує, чи відображується компонента і, відповідно, ілюстрація на поверхні форми

Canvas

Поверхня, на яку можна вивести графіку

Хід роботи:

Задача 1. Побудова графіка функції. Використовуючи властивість Pixels, побудувати графік функції у = 2 sin(x) e*/5. Границі діапазону зміни аргумента функції є вхідними даними. Діапазон зміни значень функції повинен обчислюватися під час роботи програми. На основі цих даних програма обчислює масштаб, який дозволяє побудувати графік таким чином, щоб він займав всю область форми, призначену для виведення графіка. Для побудови графіка використати всю доступну область форми, причому якщо під час работи програми користувач змінить размір вікна, то графік повинен виводитись заново з врахуванням реальних размірів вікна.

  1.  Створити форму для рисування графіка функцій по точках.
  2.  Нарисувати графік функції 2*sin(x)*ex/5.
  3.  Підключити файл заголовків math.h.
  4.  Створіть функцію, графік якої потрібно побудувати

float f(float х)

{return 2*sin(x)*exp(x/5); }

  1.  Створіть функцію Grafik,оголосивши її прототип в разділі private у файлі заголовків програми. Текст функції наведено нище.

void TForml::Grafik()

{

float xl, x2;  // границі зміни агрумента функцій

float yl, y2;  // границі зміни значення функції

float x;       // аргумент функції

float у;        // значення функції в точці х

float dx;       // приріст аргумента

int 1, Ь;       // лівий нижній кут області виведення графік

int w, h;       // ширина и висота області виведення графіка

float mx, my;   // масштаб по осям X і Y

int xO, уО;     // початок координат

// область виведення графіка

1-10;                // X - координата лівого верхнього кута

b = Forml->ClientHeight-20; // Y — координата лівого нижнього кута

h = Forml->ClientHeight-40;   // висота

w = Forml->Wldth - 20;              // ширина

xl = 0;    // нижня границя діапазона аргумента

х2 = 25;   // верхня границя діапазона аргумента

dx = 0.01;  //крок аргумента

// знайдемо максимальне и мінімальне значення функції на відрізку [xl,x2]

x = xl;

yl = f(х); // мінімум

у2 = f(x); // максимум

do

{

у = f(х);

if ( у < yl) yl = у;

if ( у > у2) у2 = у;

х += dx; } while (x <= х2);

// обчислюємо масштаб

my = (float)h/abs(y2-yl);  // масштаб по осі Y

mx = w/abs(x2-xl);        // масштаб по осі X

// осі

хО = 1+abs(xl*mx);

уО = b-abs(yl*my);

Canvas->MoveTo(xO,b);Canvas->LineTo(xO,b-h);

Canvas->MoveTo(l,yO);Canvas->LineTo(1+w,yO);

Canvas->TextOutA(xO+5,b-h,FloatToStrF(y2,ffGeneral,6,3));

Canvas->TextOutA(xO+5,b,FloatToStrF(yl,ffGeneral, 6,3));

// побудова графіка

x = xl; do {

У = f (x);

Canvas->Pixels[xO+x*mx][yO-y*my] = clRed;

x += dx;

}

while (x <= x2);

}

  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)

де:

  1.  Canvas1 — поверхня, на яку виконується копіювання;
  2.  Canvas2| — поверхня, з якої виконується копіювання;
  3.  Область1 — структура типу TRect, яка задає положення і розмір області, куди виконується копіювання;
  4.  Область2 — структура типу TRect, яка задає положення і розмір області, звідки виконується копіювання.

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

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

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

  1.  Створіть проект для роботи з бітовими зображеннями.

  1.  Сформуйте фоновий рисунок як багатократне виведення бітового зображення на поверхню форми, використавши функцію Background() (рис. 4)

Рис 4. Фоновий рисунок і бітове зображення-плитка

Оголошення функції (прототип), бітового зображення (об’єкт типу TBitmap) розмістіть в розділ private оголошення класу форми, який знаходиться у файлі заголовків.

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);

};

  1.  Створіть бітове зображення і завантаження картинки із файлу, використавши функцію обрабки події onCreate.

// функція обробки  події OnCreate

void   __fastcall TForml::FormCreate(TObject *Sender)

{

back = new Graphics::TBitmap(); // створити об’єкт — бітове зображення

// завантажити картинку

try

{

Forml->back->LoadFromFile("Legal.bmp");

}

catch (EFOpenError &e)

{

return;

}

}

  1.  Створити функцію Background(), яка забезпечуватиме формування і виведення фонового рисунка.

// формує фоновий рисунок

void  __fastcall TForml::Background()

{

int x=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);

}

  1.  Реалізувати виведення фонового рисунку на форму, використавши функцію обробки події OnPaint шляхом виклику функції Background.

// функція обробки події OnPaint

void  __fastcall TForml::FormPaint (TObject  *Sender)

{

Background(); // відновить фоновий рисунок

}

  1.  Створіть нову форму для реалізації переміщення зображення, підготовленого за допомогою графічного редактора.

Зображення об’екта виводиться застосуванням методу Draw до властивості Canvas форми, а стирається шляхом копіювання (метод CopyRect) потрібної частки фону з буфера в бітове зображення.

Форма програми наведена на рис. 6.

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

  1.  Розмістіть на формі компоненту Timer1, яка використовуватиметься для організації циклу знищення і веведення зображення літака.

Відновлення фону виконується за допомогою методу copyRect, який дозволяє виконати копіювання прямокутного фрагмента одного битового зображення в інше. У якості параметрів методу передаються: координати і розмір області, куда повинно бути виконано копіювання; поверхня, з якої повинно бути виконано копіювання; положення і розмір області, що копіюється.

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);     // висота польоту

// швидкість польоту визначається періодом виникнення

// події OnTimer, яка,  в свою чергу,  залежить від значення властивості Interval

Timerl->Interval = random(20) +  10;  

// швидкість польоту міняється від 10 до 29

}

Canvas->Draw(х,у,sprite);

}

  1.  Для збереження бітового зображеня (картинок фону factory.bmp і літака aplane.bmp) використайте два об’єкта типу TBitmap, створені у функції TForm1::Formcreate(). Розмістіть оголошення цих об’єктів у файл заголовків проекта.

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;

}

  1.  Виведіть зображення фону та рисунку на форму за допомогою методу Draw()

void  _fastcall TForml::FormPaint(TObject *Sender)

{

Canvas->Draw(0,0,back);    //фон

Canvas->Draw(x,у,sprite);  // рисунок }

  1.  Завантажте бітове зображення із ресурсу програми

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

Для, того щоб використати можливості завантаження картинки із ресурсу, спочатку потрібно створити файл ресурсів і помістити в нього потрібні картинки.

  1.  Створити файл ресурсів

Файл ресурсів можна створити за допомогою утиліти Image Editor, яка поставляється разом з C++ Builder. Запустіть Image Editor із C++ Builder, вибравши в меню Tools команду Image Editor, або із Windows, вибравши команду Пуск\Програми\Borland C++Builder\Image Editor.

Для, того щоб створити файл ресурсів, потрібно в меню File вибрати команду New\Resource File. У результаті виконання команди буде створено файл ресурсів Untitledl.res, у який потрібно помістити необхідні ресурси.

Для, того щоб у файл ресурсів додати новий ресурс, потрібно в меню Resource вибрати команду New\Bitmap. У результаті виконання цієї команди відкривається діалогове вікно Bitmap Properties, в якому потрібно встановити розмір бітового зображення і вибрати палітру. Bitmap 1 — це автоматично створене ім’я ресурсу, яке можна змінити, вибравши команду Resource Rename.

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

1. Спочатку потрібно запустити графічний редактор, наприклад Microsoft Paint, завантажити в нього файл картинки і виділити всю картинку або її частину. У процесі виділення потрібно звернути увагу на інформацію про розмір (у пікселях) виділеної області (Paint виводить розмір виділеної області в стрічці стану). Потім, вибравши команду Копіювати меню Правка, необхідно помістити копію виділеного фрагменту в буфер.

2. Далі потрібно переключитись в Image Editor, вибрати ресурс, в який помістити з буферу картинку, і встановити значення характеристик ресурса відповідно з характеристиками картинки. Значення характеристик ресурсу вводяться в поля діалогового вікна Bitmap Properties, яке відкривається вибором команди Image Properties меню Bitmap. Після встановлення характеристик ресурсу можна вставити картинку в ресурс, вибравши команду Past меню Edit.

Після добавлення всіх потрібних ресурсів файл ресурсу потрібно зберегти в тому ж каталозі, де знаходиться програма, для якої цей файл створений. Зберігається файл ресурсу вибором команди File\ Save\Image Editor присвоюється файлу ресурсів розширення res.

  1.  Підключити файлу ресурсів

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

Ця директива виглядає таким чином:

#pragma resource Файл ресурсів

де файл ресурсів — ім’я файлу ресурсів.

Наприклад:

#pragma resource "images.res"

Завантажити бітове зображення із ресурсу можна за допомогою методу LoadFromResourceName, який має два параметри: ідентифікатор програми і ім’я ресурсу. У якості ідентифікатора програми використовується глобальна змінну Hinstance. Ім'я ресурсу повинно бути представлене у вигляді стрічкової константи.

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

#pragma resource "images.res"

void __fastcall TForml::FormCreate (TObject *Sender)

{

// завантажити фоновий рисунок із ресурсу

back = new Graphics::TBitmap();

back->LoadFromResourceName((int)HInstance,"FACTORY");

// встановити розмір рабочої області форми увідповідності з розміром фонового рисунка

ClientWidth = back->Width;

ClientHeight = back->Height;

// завантажити зображення об’єкта із ресурсу

sprite = new Graphics::TBitmap();

sprite->LoadFromResourceName((int)HInstance,"APLANE");

sprite->Transparent = true;

// вихідне положення літака

x=-20; // щоб літак вилітав із лівої границі вікна

у=20;

}

  1.  Збережіть створену програму у своїй папці.
  2.  Створіть ехе-файл вашої програми.
  3.  Закрийте С++ Builder, запустіть створену програму і і поекспериментуйте з нею.
  4.  Продемонструйте створену форму викладачеві. Закінчіть роботу.

 

Контрольні запитання:

1. Назвіть основні Методи для рисування графічних примітивів

2. Як здійснити виведення тексту на поверхню Canvas?

3. Перерахуйте  властивості об’єкта TFont.

4. Як вивести  готову ілюстрацію на поверхню об’єкта ?

5. Для чого використовується метод метод LoadFromFile ?

6. Яка функція здійснює завантаження і виведення бітових зображень на поверхню форми виконує




1. Акцизы- действенный механизм и проблемы его совершенствования
2. Hnoi Rocks
3. Евтушенко Евгений Александрович
4. Повышение безопасности пассажиров метрополитена при возможном пожаре в тоннеле
5. Геометрическая теория строения материи
6. ВНЕДРЕНИЕ НОВЫХ ЯВЛЕНИЙ В ОБЩЕСТВЕННО-ПОЛИТИЧЕСКУЮ МЫСЛЬ РОССИИ В 50-60- Е ГГ.XVIII ВЕКА- «БОРЬБА С МОНАРХОМ»
7. 2010 82 В инспекцию Министерства по налогам и сборам Республики Беларусь далее инспекция МНС
8. 2 Конденсационный гигрометр3 Плотность влажного воздуха
9. Психология работы с персоналом правоохранительных органов. Шпаргалка
10. Философия и атеизм
11. МОСКОВСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ТЕХНОЛОГИЙ И УПРАВЛЕНИЯ им
12. в пределах области региона страны континента или всего земного шара
13. і. Мама і тато говорять що у них були інші підручники менш сучасні комп'ютери і телевізори коли
14. IIбпересечение 2ух плоскостейо-п Способ замены плоскостей- аиз линии о-п сделать -- проецировать о
15. Ориентация на внутренних потребителей при усовершенствовании системы управления для кого выполняется эта работа
16. создание и самоопределение личности в культуре утверждение человека в человеке
17. Историчекое, экономико-географическое положение Великобритании
18. сельцо Дудкино. Но о владельцах
19. Культурный вопрос 1
20. 9 Введение