Студопедия
Новини освіти і науки:
МАРК РЕГНЕРУС ДОСЛІДЖЕННЯ: Наскільки відрізняються діти, які виросли в одностатевих союзах


РЕЗОЛЮЦІЯ: Громадського обговорення навчальної програми статевого виховання


ЧОМУ ФОНД ОЛЕНИ ПІНЧУК І МОЗ УКРАЇНИ ПРОПАГУЮТЬ "СЕКСУАЛЬНІ УРОКИ"


ЕКЗИСТЕНЦІЙНО-ПСИХОЛОГІЧНІ ОСНОВИ ПОРУШЕННЯ СТАТЕВОЇ ІДЕНТИЧНОСТІ ПІДЛІТКІВ


Батьківський, громадянський рух в Україні закликає МОН зупинити тотальну сексуалізацію дітей і підлітків


Відкрите звернення Міністру освіти й науки України - Гриневич Лілії Михайлівні


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


Гендерна антидискримінаційна експертиза може зробити нас моральними рабами


ЛІВИЙ МАРКСИЗМ У НОВИХ ПІДРУЧНИКАХ ДЛЯ ШКОЛЯРІВ


ВІДКРИТА ЗАЯВА на підтримку позиції Ганни Турчинової та права кожної людини на свободу думки, світогляду та вираження поглядів



Програмування графіки.

Лекція №9

НЕ 4.2. Графіка в Delphi.

Деякі вибіркові відомості про графічні можливості об‘єктно-орієнтованого програмування на прикладі інтегрованого середовища Delphi вже були розглянуті на стадії підготовки до лабораторної роботи №3. Мета цієї лекції - систематизувати отримані знання, повторити вже відомі елементи для роботи з графічними об‘єктами, детально розглянути нові компоненти для роботи з готовими графічними файлами.

 

4.2.1 Використання готових графічних файлів. Компонент Image та деякі його властивості.

Компонент Image розташований на сторінці Additional сторінки компонентів. Основна його властивість - вміщувати картинку - Picture. Якщо натиснути три крапки біля цієї властивості в вікні інспектора об‘єктів або просто зробити подвійне натискання на компоненті, то відкриється вікно редактора зображення Picture Editor. Кнопка Load призначена для загрузки в вікно будь-якого графічного файла - вона викликає стандартний діалог вибору файла. Після натискання кнопки Ok в компоненті Imsge відобразиться графічна картинка. Загружена в процесі проектування картинка зберігається в програмі.

Тепер розглянемо властивості, що керують розмірами малюнка.

· AutoSize=True - розмір компонента Image автоматично буде підігнано під розмір малюнка, відповідно, якщо AutoSize=False, то цього не відбудеться.

· Stretch=True - розмір малюнка буде автоматично підігнано під розмір компонента Image.

· Center=True - малюнок буде відцентровано, тобто розташовано симметрично відносно боків компонента. Центрування можливе тільки в тому випадку, коли малюнок за розмірами менший за компонент Image.

· Transparent=True. Слово Transparent перекладається як прозорість. Якщо ця властивість активізована, тобто її значення True, то зображення в Image стає прозорим. Цю властивість використовують для накладання зображень одне на одне. Важливо: ця властивість дії тільки для бітових матриць (графічні файли формату *.bmp).

 

Приклад створення простого додатка для перегляду графічних файлів. Першим кроком необхідно перенести на форму компонент Image. Задайте його розміри. Для вибору графічного файлу необхідно з сторінки діалогів перенести компонент OpenPictureDialog. Для запуску програми можна зробити або кнопку із надписом «Файл», або головне меню MainMenu з одним пунктом «Файл». Для визначеності домовимось, що це буде кнопка. Тепер залишилось лишень написати обробник події натискання на кнопку:

 

if OpenPictureDialog1.Execute then

Image1.Picture.LoadFromFile(OpenPictureDialog1.FileName);

 

В цій програмі буде один недолік - зображення можуть бути різних розмірів, тому їхнє положення на формі буде або несиметричним, або вони взагалі не будуть повністю виведені в вікно форми. Для того, щоб примусити форму автоматично налаштовуватись на розміри малюнка, необхідно задати Stretch=True.

 

4.2.2 Формати графічних файлів. Delphi підтримує три типи графічних файлів: бітові матриці, піктограми, метафайли. Всі три типи описують графічні файли, різниця між ними полягає в засобах збереження графічної інформації та способах доступа до неї.

· Бітова матриця - це файли *.bmp, растрова графіка. Інформація зберігається таким чином, що будь-який комп‘ютер зможе вивести малюнок у відповідності до його конфігурації.

· Піктограми - файли з розширенням *.ico - це маленькі бітові матриці. Вони використовуються для збереження значків програм, в швидких кнопках, в пунктах меню. Відмінність від бітових матриць полягає в тому, що піктограму неможливо масштабувати, вона зберігає той розмір, з яким вона була створена.

· Метафайли (MetaFiles) - файли з розширеннями *.emf, *.wmf - зберігають не послідовність бітів, а інформацію про спосіб створення малюнка. Вони зберігають послідовність команд створення малюнка, які повторюються при вдітворенні зображення. Ці файли, як правило, більш компактні, ніж файли *.bmp.

 

4.2.3 Редактор зображень Image Editor. Призначення вбудованого редактора зображень - створення матриць, піктограм, зображень курсора і т. і. Викликається командою Tools| Image Editor. Фактично це - простий графічний редактор типу PainBrush з досить обмеженими можливостями.

 

4.2.4 Канва - полотно для малювання. Багато компонентів в Delphi мають властивість Canvas (канва, полотно), фактично це - область компонента, на якій можна малювати або відображати готові зображення. Цю властивість мають форми, графічні компоненти Image, PaintBox, BitMap та багато інших. Канва містить властивості та методи, що істотно спрощують графіку Delphi. Кожна точка канви має координати X та Y. Система координат канви, як і скрізь в Delphi, має початком лівий верхній кут канви. Координата X зростає при переміщенні зліва направо, а координата Y - при переміщенні зверху вниз. Координати вимірюються у пікселях. Піксел - це найменший елемент поверхні малюнка, з яким можна маніпулювати. Найважливіша властивість пікселя - його колір. Для опису кольору використовується тип TColor. У Delphi визначено безліч констант типу TColor. Одні з них безпосередньо визначають кольору (наприклад clBlue - синій), інші визначають колір елементів вікон, які можуть змінюватися в залежності від обраної користувачем палітри кольорів Windows (наприклад, clBtnFaсе - колір поверхні кнопок). Але для графіки іноді цих визначених констант не вистачає. Вам можуть знадобитися такі відтінки, яких немає в стандартних палітрах. У цьому випадку можна задавати колір 4-байтним шістнадцятковим числом, три молодших розряду якого являють собою інтенсивності синього, зеленого і червоного кольору відповідно. Наприклад, значення $ 00FF0000 відповідає чистому синьому кольору, $ 0000FF00 - чистому зеленому, $ 000000FF - чистому червоному. $ 00000000 - чорний колір, $ 00FFFFFF - білий.

Малювання по пікселях Малювати на канві можна різними способами. Перший варіант - малювання по пікселях. Для цього використовується властивість канви Pixels. Ця властивість являє собою двовимірний масив, який відповідає за кольір канви. Наприклад, Canvas.Pixels [10, 20] відповідає кольору пікселя 10-го ліворуч і 20-го зверху. З масивом пікселів можна поводитися як з будь-якиммасивом. Наприклад, Canvas.Pixels [10,20]: = 0 або Canvas.Pixels [10,20]: = clBlack - це завдання пікселя чорного кольору.

Малювання за допомогою пера Реn У канви є властивість Реп - перо. Це об'єкт, в свою чергу має ряд властивостей. Одна з них - вже відома вам властивість Color - колір, яким наноситься рисунок. Друга властивість - Width (ширина лінії). Ширина задається в пікселях. По замовчуванню ширина дорівнює 1. Властивість Style визначає вигляд лінії. Ця властивість може приймати наступні значення:

· psSolid суцільна лінія

· psDash штрихова лінія

· psDot пунктирна лінія

· psDashDot штрих-пунктирна лінія

· psDashDotDot лінія, чергуються штрих і два пунктиром

· psClear відсутність лінії

· psInsideFrame суцільна лінія

Приклади ліній всіх стилів наведені на рис. 4.1.

 

Рис. 4.1 - Лінії різних стилів

Всі стилі зі штрихами і пунктиром доступні тільки при Width = 1. В іншому випадку лінії цих стилів рисуются як суцільні. Стиль psInsideFrame - єдиний, який допускає довільні кольору. Колір лінії при інших стилях округляється до найближчого з палітри Windows. У канви є властивість PenPos типу TPoint. Ця властивість визначає в коорди-натах канви поточну позицію пера. Переміщення пера без промальовування лінії, тобто застосування PenPos, проводиться методом канви MoveTo (X, Y). Тут X і Y - координати точки, в яку переміщується перо. Ця поточна точка стає вихідної, від якої методом LineTo (X, Y) можна провести лінію в точку з координатами (X, Y). При цьому поточна точка переміщується в кінцеву точку лінії, і новий виклик LineTo буде проводити лінію від цієї нової поточної точки. Ви можете задавати координати пікселів, що виходять за межі розмірів канви, і нічого страшного при цьому не станеться. Це дозволяє не турбуватися про те, яка частина малюнка потрапляє в рамку Image, а яка ні. Перо може малювати не тільки прямі лінії, але й фігури. Нижче перераховані ¬ ни деякі з методів канви, що використовують перо для малювання фігур:

· Arc малює дугу кола або еліпса

· Chord малює замкнуту фігуру, обмежену дугою кола або еліпса і хорд

· Ellipse малює коло або еліпс

· Pie малює сектор кола або еліпса

· PolyBezier малює кусочно криву третього порядку з точним відображенням першої та останньої точки; число точок має бути кратно 3

· PolyBezierTo малює кусочно криву третього порядку з точним відображенням послед-ній точки; число точок має бути на 1 менше числа, кратного 3

· Polygon малює замкнену фігуру з кусочно-лінійною границею

· Polyline малює кусочно-лінійну криву

· Rectangle малює прямокутник

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

Приклади більшості перерахованих фігур наведено на рис. 4.2

 

Рис. 4.2 - Приклади фігур, намальованих пером

 

Для виведення тексту на канву використовується метод TextOut, синтаксис якого: TextOut (X, Y, <текст>); Є ще кілька методів виведення тексту, які застосовуються рідше. Всі методи виведення тексту використовують властивість канви Font - шрифт.

Brush - пензель. У канви є властивість Brush - пензель. Ця властивість визначає фон і заповнення замкнених фігур на канві. Brush - це об'єкт, що має в свою чергу ряд властивостей. Властивість Color визначає колір заповнення. Властивість Style визначає шаблон заповнювання (штрихування) і може приймати значення:

 

 

 


Читайте також:

  1. Безпосереднє програмування відеопам'яті
  2. Виконання програми - реалізація мови програмування
  3. Геометрична інтерпретація задачі лінійного програмування
  4. Геометрична інтерпретація задачі нелінійного програмування
  5. Геометрична інтерпретація розв’язків цілочислових задач лінійного програмування на площині
  6. Графічний метод розв’язування задач лінійного програмування
  7. Державне регулювання суспільного відтворення та його форми. Планування та програмування
  8. Динамічне програмування.
  9. Динамічного програмування
  10. Економічна і математична постановка задачі нелінійного програмування
  11. Економічна і математична постановка задачі нелінійного програмування
  12. Економічна і математична постановка цілочислової задачі лінійного програмування




Переглядів: 1620

<== попередня сторінка | наступна сторінка ==>
Виборча система України. | ЗМІСТ ДИСЦИПЛІНИ

Не знайшли потрібну інформацію? Скористайтесь пошуком google:

  

© studopedia.com.ua При використанні або копіюванні матеріалів пряме посилання на сайт обов'язкове.


Генерація сторінки за: 0.016 сек.