Призначення і типи контекстів

Основою механізму взаємодії додатків Windows з графічними пристроями (екран і принтер) є інтерфейс графічних пристроїв GDI (Graphics Device Interface) GDI це сукупність програмних коштів Windows, організуючих висновок на екран або принтер графічних обєктів текстових рядків, геометричних фігур, зображень і тп Windows-додаток не має безпосереднього доступу до апаратури Замість цього воно викликає функції GDI, які працюють з драйверами фізичних пристроїв Інакше кажучи, додатки, звертаючись до функцій GDI, працюють не з фізичними пристроями виведення, а з логічними, і при виклику функцій не враховується фізичний спосіб відображення Можливості виводу і апаратні особливості пристрою враховує його драйвер Завдяки цьому механізму виведення графічної інформації додатки здатні працювати з будь-яким пристроєм виведення, драйвер якого встановлений в системі Код бібліотеки GDI знаходиться у файлі gdi32dll Драйвери стандартних пристроїв поставляються як частину підсистеми введення-виведення Windows, а драйвери спеціалізованих пристроїв надаються їх виробниками

Прикладами функцій GDI є функції створення інструментів малювання (кисті, піря, шрифти), функції управління квітами, режимами малювання, функції виведення графічних обєктів У зада-чу GDI входить контроль за кордонами виведених обєктів, щоб вони не затерли інші вікна

Параметри виведення на пристрій повинні бути встановлені в кон-тексті пристрої (DC, Device Context) за допомогою функцій GDI Контекст пристрою це системна структура даних, яка містить характеристики пристрою виводу і дескриптори обраних графічних обєктів і режимів малювання

До основних графічних обєктів відносяться:

• Перо (реп) для малювання ліній.

• Кисть (brash) для заповнення фону або заливки фігур

• Растрове зображення (bitmap)

• Палітра (palette) для визначення набору доступних кольорів

• Шрифт (font) для виведення тексту

• Регіон (region) для відсікання області виведення

Розглянемо поняття регіону Регіон це частина вікна, з якої здійснюється робота Зрозуміло, що для прискорення виведення графіки доцільно в кожен момент часу змінювати і оновлювати тільки частина вікна, а не перемальовувати все вікно в цілому Існує кілька типів регіонів

Оновлюваний (update) vum недійсний (1п \> аІй) регіон-це частина вікна, яка вимагає оновлення Відомий (visible) регіон – це та частина вікна, яку в даний момент бачить користувач Система змінює видимий регіон вікна і в тому випадку, коли вікно змінює розміри, і в тому випадку, коли переміщення іншого вікна або закриває частину даного вікна, або відкриває закриту раніше частина Регіон відсікання (clipping region) обмежує область, усередині якої дозволяється відображення графічної інформації Робота з регіонами здійснюється за допомогою функцій SetWindowRgn, Se-lectClipPath, SelectClipRgn

Якщо при виклику функції CreateWindow був використаний стиль WS_CLIPCHILDREN або WS_CLIPSIBLINGS, то це вносить додаткові правила у визначення видимого регіону, виключаючи з нього будь-яке дочірнє або будь-які вікна того ж класу Завдяки цього малювання не торкається відображаються області таких вікон

Функції GDI використовують тільки вибрані в контекст параметри та інструменти малювання Наприклад, для малювання лінії заданої товщини в контексті в момент виклику функції малювання повинен зберігатися дескриптор пера необхідної товщини Функції виводу тексту визначають розмір, колір, жирність шрифту по дескриптору шрифту Якщо програмісту не потрібні свої значення в контексті, то для виведення будуть використані значення за замовчуванням

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

Розрізняють такі типи контекстів пристрою:

• контекст монітора

• контекст принтера

• контекст в памяті (сумісний контекст)

• метафайловий контекст

• інформаційний контекст

Контекст монітора створювати не потрібно, його потрібно тільки отримати у ОС Відзначимо, що контекст монітора може бути, у свою чергу, загальним або приватним Загальний тип контексту застосовується, якщо

зміна вмісту контексту не дуже інтенсивно Для графічних редакторів, програм з інтенсивним виведенням графіки використовуються вікна з приватним типом контексту дисплея, зміни в якому не пропадають навіть після звільнення контексту Для того щоб вікно мало приватний контекст, потрібно вказати стиль класу CSOWNDC

Джерело: Сучкова, ЛІ Win32 API: основи програмування: навчальний посібник / ЛІ Сучкова АлтГТУ ім ШІ Ползунова -Барнаул, АлтГТУ, 2010 138 с, іл

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*