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

Мал. 3. Приклад малювання ламаної фігури Окрім прямої і точки є функції для малювання готових фігур, як коло(еліпс) прямокутник(квадрат).

  • Chord – Малює хорду, обмежений пересіченням еліпса, відцентрованого у прямокутнику і сегменту лінії.

  • Ellipse – малювання еліпса вписаного в певний прямокутник

  • FillRect - прямокутник зафарбований певним кольором (колір задається у функції як хендл щитки зафарбовування)

  • FrameRect – малює рамку доокола прямокутника певним кольором

  • InvertRect – інвертує колів в області виділеного прямокутника

  • Pie – Малює сектоp, центрований в облежаному прямокутнику

  • Polygon – малює полігон (закриту область)

  • PolyPolygon – малює серію полігонів

  • Rectangle – прямокутник

  • RoundRect – прямокутник з закругленими кутами

Колір замальовування буде білим, якщо є потреба змінити колір, потрібно підмінити інструмент "щитка" у 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). Ця властивість не тільки розповсюджується на лінії, також на готові об‘єкти. При накладені зображень з різним кольором відбувається вирізання кольору, наприклад, якщо на синьому полотні намалювати прямокутник з білим зафарбуванням, намалюється жовтий.

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