Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
lab4.doc
Скачиваний:
0
Добавлен:
04.01.2020
Размер:
343.04 Кб
Скачать

Виведення тексту

Іноді потрібно вивести який-небудь текст після повідомлення, довжина якого під час розробки програми невідома. В цьому випадку необхідно знати координати правої межі області виведеного тексту. Координати правої межі тексту, виведеного методом Textoutaможна отримати, звернувшись до властивості penpos. Наступний фрагмент коди демонструє можливість виведення рядка тексту за допомогою двох інструкцій Textouta:

Canvas->textouta(10,10,"borland ");

Крапка

Поверхні, на яку програма може здійснювати виведення графіки, відповідає об'єкт canvas. Властивість Pixels що є двовимірним масивом типу Tcolorмістить інформацію про колір кожної точки графічної поверхні. Використовуючи властивість pixels можна задати колір будь-якої точки графічної поверхні, тобто "намалювати" крапку. Наприклад, інструкція

Canvas->pixels[10][10] = clred

забарвлює точку поверхні форми в червоний колір.

Розмірність масиву pixels визначається реальним розміром графічної поверхні. Розмір графічної поверхні форми (робочій області, яку також називають клієнтською) визначають властивості зlientwidth і зlientheight а розмір графічної поверхні компоненту image — властивості width і Height. Лівій верхній точці робочої області форми відповідає елемент pixels [0] [0] а правою ніжней —

Pixels[Ciientwidth - 1][Cliientheight -1].

Ілюстрації

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

Значок компоненту Image

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

Властивість

Опис

Picture

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

Width, Height

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

Proportional

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

Strech

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

Autosize

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

Center

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

Visible

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

Canvas

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

Ілюстрацію, яка буде виведена в полі компоненту image можна задати як під час розробки форми додатку, так і під час роботи програми.

Під час розробки форми ілюстрація задається установкою значення властивості Picture шляхом вибору файлу ілюстрації в стандартному діалоговому вікні, яке стає доступним в результаті клацання на командній кнопці Load вікна Picture Editor яке, у свою чергу, з'являється в результаті клацання на кнопці з трьома крапками в рядку властивості picture

Якщо розмір ілюстрації більше розміру компоненту, то властивості Proportional потрібно привласнити значення true . Тоді буде виконано масштабування ілюстрації відповідно до реальних розмірів компоненту.

Щоб вивести ілюстрацію в полі компоненту image під час роботи програми, потрібно застосувати метод Loadfromfile до властивості Picture вказавши як параметр методу файл ілюстрації. Наприклад, інструкція

Imagel->picture->loadfromfile("e:\\temp\\bart.bmp")

завантажує ілюстрацію з файлу bart.bmp і виводить її в полі компоненту виведення ілюстрації (Image 1).

За умовчанням компонент image можна використовувати для відображення ілюстрацій форматів BMP, ICO і WMF. Щоб використовувати компонент для відображення ілюстрацій у форматі JPEG (файли з розширенням jpg), треба підключити відповідну бібліотеку (помістити в текст програми директиву #include <jpeg.hpp>). Звернете увагу, що якщо вказаної директиви в тексті програми не буде, то компілятор не виведе повідомлення про помилку. Але під час роботи програми при спробі завантажити jpg-файл за допомогою методу Loadfromfile виникне помилка — виключення Einvalidgraphic.

Щоб вибрати ілюстрацію, клацніть в рядку Picture на кнопці стремено крапками, потім у вікні Picture Editor — на кнопці Load

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

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

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

Сформувати бітовий образ можна шляхом завантаження з 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 знаходиться зображення літака).

Таблиця. Властивості об'єкту 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 текст якої приведений в лістингу. Біле поле навколо лівого літака показує дійсний розмір бітового образу Plane. Білого поля навколо правого літака немає, оскільки перш ніж вивести бітовий образ другий раз, властивості Transparent було привласнено значення true.

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

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

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

}

Мультиплікація

Під мультиплікацією зазвичай розуміється рухомий і змінний малюнок. У простому випадку малюнок може тільки рухатися або тільки мінятися.

Забезпечити переміщення малюнка задоволено просто: треба спочатку вивести малюнок на екран, потім через деякий час стерти його і знову вивести цей же малюнок, але вже на деякій відстані від його первинного положення. Підбором часу між виводом і видаленням малюнка, а також відстані між старим і новим положенням малюнка (кроку переміщення), можна добитися того, що у спостерігача складатиметься враження, що малюнок рівномірно рухається по екрану.

Завдання для виконання.

1. Виконується на самостійній підготовці перед виконанням роботи.

    1. Ознайомитись з основними теоретичними відомостями по виконанню лабораторної роботи.

    2. Ознайомитись зі змістом завдання для виконання лабораторної роботи.

2. Виконується в лабораторії:

2.1. Ознайомитися з пунктами меню редактора та основними інструментами редактора С++.

2.2. У відповідності з варіантом завдання, що вміщені в додатку, розробити програму на мові програмування С++.

2.3. В завданні n - відповідає номеру по списку старости.

Зміст звіту.

1. Тема та мета роботи.

2. Коротко відповіді на контрольні запитання.

3. Результати виконання лабораторної роботи.

4. Висновки по виконанню лабораторної роботи.

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

1. Опишіть основні функціональні можливості класу TCanvas.

2. Переваги та недоліки середовища розробки програмних засобів Borland C++.

3. Опишіть основні функції класу TCanvas для роботи з текстом.

4. Опишіть основні функції класу TCanvas для графічними примітивами.

5. Опишіть підходи для реалізації динамічних сцен.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]