Графіка в ultimate ++: растрові зображення

Відео: Растрова і векторна графіка

Графіка в Ultimate ++: растрові зображення
Інфраструктура для роботи з растровими зображеннями в U ++ потужна, але досить складна, тому описати її детально в невеликій статті неможливо. Для низкоуровневого попиксельного доступу передбачений клас ImageBuffer, який зберігає двовимірний масив точок типу RGBA:
ImageBuffer ib (50, 50) - // Створюємо буфер 50х50
for (int y = 0 y r = 4 * x-
l-gt; g = 4 * y;
l-gt; b = 200;
// Наступний піксель
}
}
Premultiply (ib) - // Застосувати прозорість

Буфери можна відобразити безпосередньо, але можна встановити їх в об`єктах Image і відобразити на полотні методом DrawImage:
Image image = ib- // Присвоїти буфер об`єкту зображення
w.DrawImage (140, 15, im) -
w.DrawImage (165, 25, im) -

Графіка в Ultimate ++: растрові зображення




Такий виклик відобразить накладення двох напівпрозорих квадратів (див. Рис. Вище).

Завантаження графічних файлів в об`єкти типу Image здійснюється за допомогою різних класів, успадкованих від StreamRaster. Найпростіший варіант, в якому тип файлу визначається автоматично, виглядає так:
Image img = StreamRaster :: LoadFileAny (file _ name) -

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




дизайнер зображень

Поки що робота з графікою в U ++ вигладить стандартно і нецікаво, проте все кардинально змінюється коли, мова заходить про завантаження зображень для призначеного для користувача інтерфейсу, а саме: іконок, логотипів і т.п. Ідеологія, яка використовується для роботи з цими даними, аналогічна ідеології схем баз даних і компоновок віджетів. Створюється спеціальний .iml-файл, який містить набір звичайних макросів С ++ і включається безпосередньо в код програми директивою #include. Цей файл містить всі дані іконок в текстовому вигляді. При включенні .iml-файлу з них автоматично створюються об`єкти Image. Всі перетворення здійснюються на стадії компіляції тобто ніякої роботи по завантаженню малюнків з файлів під час виконання взагалі не відбувається, а малюнки стають бінарними ресурсами, включеними в тіло програми.

Графіка в Ultimate ++: растрові зображення

Створимо в TheIDE новий файл з ім`ям images.iml. Він негайно відкриється в спеціальному дизайнера зображень, який представляє собою досить потужний растровий графічний редактор, орієнтований на створення іконок (див. Рис. Вище). У кожному .iml-файлі може бути будь-яка кількість іконок. Їх можна як створювати з нуля, так і завантажувати готові з файлів.

Для того щоб включити .iml-файл в програму, потрібно написати перед оголошенням класу головного вікна:
#define IMAGECLASS MyImages
#define IMAGEFILE
#include

Семантика в точності повторює включення файлів .lay і .scm, розглянутих в попередніх статтях. Глобальний тип IMAGECLASS використовується для автоматичної генерації «службового» коду, а заголовок містить необхідні для цього оголошення. В результаті, в програмі стає доступний статичний клас з ім`ям MyImages з методами, які мають ті ж імена, що й іконки в дизайнера зображень. Ці методи повертають посилання на об`єкти Image, який можна відразу ж використовувати. Наприклад, щоб відобразити іконку з ім`ям exit, досить написати:
w.DrawImage (350, 150, MyImages:: exit ());

Об`єкт MyImages одночасно є масивом. Метод Get (i) повертає i-тое зображення, а метод Getld (i) - його текстовий ідентифікатор.

Таким чином, включення .iml-файлів грає ту ж роль, що включення бінарних ресурсів в інших тулкіта, але виконується набагато елегантніше засобами самого С ++, без будь-яких сторонніх «компіляторів ресурсів».



Вас набагато більше хвилює здоров`я вашого домашнього вихованця, ніж растрові зображення в Ultimate ++? Ну, в такому разі Вам буде цікаво дізнатися, що вакцинація собак (https://helvet.ru/catalog/evinton/articles/1101) повинно здійснюватися виключно ветеринарами з високою кваліфікацією. Дізнатися подробиці Ви зможете на helvet.ru.

ІНШЕ

Ultimate ++: theide фото

Ultimate ++: theide

Відео: N ++: Sigma Structure Symphony (SU-B-17-04) All Gold При кожному запуску TheIDE відкривається вікно вибору…

Ultimate ++: схеми баз даних фото

Ultimate ++: схеми баз даних

Відео: Бази даних, лекція №1 (2013) Об`єкти SqlExp кардинально полегшують створення запитів, але створення самих…

» » Графіка в ultimate ++: растрові зображення