
- •Теоретичні основи Основні поняття
- •Поняття графічний контекст
- •Визначення dc для об’єктів типу вікно
- •Поняття растру та основні функції роботи з ним.
- •Мал. 3. Приклад малювання ламаної фігури Окрім прямої і точки є функції для малювання готових фігур, як коло(еліпс) прямокутник(квадрат).
- •Створення інструментів.
- •Створення пера
- •Створення щитки
- •Створення об’єкта шрифт
- •Створення регіональних контурів
- •Створення об’єкту типу bitmap (полотно)
Мал. 3. Приклад малювання ламаної фігури Окрім прямої і точки є функції для малювання готових фігур, як коло(еліпс) прямокутник(квадрат).
|
|
|
|
|
|
|
|
|
|
Колір замальовування буде білим, якщо є потреба змінити колір, потрібно підмінити інструмент "щитка" у DC.
Поняття палітри інструментів та оперування з ними.
Для малювання будь-яких об‘єктів в GDI потрібно скористатися певним інструментом. Будь-який DC системи має у своєму розпорядженні 5 об‘єкт-інструментів. Це перо, щитка, текстовий шрифт, регіон (область) відтворення та полотно на якому він малює.
Вважається, що первинно DC має стандартний набір. Наприклад, чорна ручка, біла щітка, стандартній шрифт і тд. Для використання у певному DC іншого інструменту, потрібно "підмінити" інструмент. Це здійснюється за допомогою функції SelectObject.
SelectObject
hdc, // хендл DC
gdiobj // хендл об‘єкт-інструменту, на який хочемо замінити.
Результат: хендл старого інструменту
В один момент часу DC може оперувати тільки ОДНИМ НАБОРОМ ІНСТРУМЕНТІВ. Тобто, водночас він не може використовувати 2 об‘єкти перо, наприклад. Тому якщо потрібно, у певний момент часу поміняти інструмент, викликаємо функцію (SelectObject), малюємо новим інструментом і при потребі, повертаємо старий таким же методом.
Іноді потрібно видалити старий інструмент, щоб не засмічувати пам‘ять. Це здійснюється за допомогою функції DeleteObject. Параметр 1, хендл об‘єкту що знищуємо.
Окрім цього, бувають ситуації коли нам потрібно визначити характеристики певного інструменту. Це здійснюється за допомогою GetObject.
GetObject
Hgdiobj // хендл інструменту
cbBuffer // розмір буфера
lpvObject // вказівник на буфер
Результат: якщо успішно то повертає кількість байт записаних у буфер.
Під буфером розуміється, певна структура, наприклад, якщо хендл пера то структура LOGPEN, для щитки LONGBRUSH і тд.
Для визначення типу інструменту можна скористатися функцією GetObjectType.
Окрім цього, є ще одна важлива і водночас цікава функція, котра керує режимом малювання. SetROP2. Вона цікава тим, що може задавати властивість R2_XORPEN. Для зрозумілості, наприклад, якщо намалювати дві ліні, однакового кольору, одна поверх іншою, друга то витре першу. Принцип логічної операції xor (1 xor 1 = 0). Ця властивість не тільки розповсюджується на лінії, також на готові об‘єкти. При накладені зображень з різним кольором відбувається вирізання кольору, наприклад, якщо на синьому полотні намалювати прямокутник з білим зафарбуванням, намалюється жовтий.