Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Типи графічних пристроїв та їх контексти

Лекція № 7: Графічні об’єкти в MFC

Класи типових діалогів Windows.

У бібліотеці повністю реалізовано та пропонується до використання (у загальному без потреби в модифікації коду) декілька класів типових діалогів. Серед них:

CFileDialog – діалог для навігації системою каталогів та вибору файлу.

CColorDialog – діалог вибору або створення палітри кольору.

CFontDialog – діалог вибору та на лаштування параметрів шрифту.

CFindReplaceDialog – діалог для організації пошуку та заміни тексту.

CPrintDialog – діалог вибору та налаштування друкарки.

CPageSetupDialog – діалог налаштування параметрів сторінки.


 

 

План

1. Типи графічних пристроїв та їх контексти.

2. Види графічних об’єктів.

 

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

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

В бібліотеці MFC реалізовано ряд класів, що беруть на себе більшу частину роботи зі створення, ініціалізації та коректному звільненні графічних ресурсів, що необхідно для ефективної реалізації графічного виводу.

В MFC реалізовано п’ять типів контекстів графічних пристроїв, базовий CDC та чотири похідних від нього CPaintDC, CClientDC, CWindowDC та CMetaFileDC.

CDC – базовий клас для всіх класів, що інкапсулюють контексти пристроїв Windows. Об’єкти цього класу працюють зі всім дисплеєм або з друкаркою в цілому. Вказівник на цей клас передається в такі функції, як наприклад CView::OnDraw(), хоча фактично він може вказувати на довільний дочірній об’єкт.

У цьому класі реалізовано всі основні засоби які необхідні для відображення графіки, решту класи є допоміжними. Вони відрізняються від базового в основному тільки конструктором та деструктором.

CPaintDC – об’єкти цього класу використовуються тільки в обробнику повідомлень WM_PAINT, що генерується функціями UpdateWindow() та RedrawWindow(). Обробником такого повідомлення є функція CWnd::OnPaint().

CClientDC – об’єкти цього класу забезпечують доступ тільки до клієнтської частини вікна. Використовується для графічного виводу в довільній функції на відміну від об’єктів класу CPaintDC.

CWindowDC – об’єкти цього класу забезпечують доступ до всього вікна, клієнтської та неклієнтської його частин.

CMetaFileDC – об’єкти цього класу забезпечують доступ до метафайлів Windows. Метафайли можуть бути як контекстно-залежними так контекстно-незалежними. В другому випадку дані які записані в них можуть бути виведені на довільний фізичний пристрій однаково.

Розглянемо базовий клас контекстів пристроїв CDC, так як основні функціональні можливості реалізовано саме в ньому.

Основною функції ініціалізації об’єкту класу CDC є:

 

virtual BOOL CDC::CreateDC(LPCTSTR lpszDriverName, LPCTSTR lpszDeviceName,

LPCTSTR lpszOutput, const void lpInitData);

 

де lpszDriverName та lpszDeviceName – символьні рядки з назвами драйверу та конкретного фізичного пристрою; lpszOutput – символьне ім’я потоку виводу (файлу чи порту); lpInitData – вказівник на структуру, що містить нилаштування пристрою.

Для створення контексту пристрою в пам’яті використовується функція

 

virtual BOOL CDC::CreateCompatibleDC(CDC * pDC);

 

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

Робота з об’єктами малювання. Для роботи з об’єктами малювання в контексті пристрою передбачені функції, що дозволяють встановити відповідний об’єкт та отримати вказівник на відповідний встановлений об’єкт малювання. До перших відносяться перевантажувана функція CDC::SelectObject(), наприклад:

 

CPen * CDC::SelectObject(CPen * pPen);

CBrush * CDC::SelectObject(CBrush * pBrush);

До другої групи функцій належать:

 

CPen * CDC::GetCurrentPen();

CBrush * CDC::GetCurrentBrush();

CBitmap * CDC::GetCurrentBitmap();

CFont * CDC::GetCurrentFont();

Крім встановлення об’єктів малювання функціями контексту пристрою встановлюється:

режими малювання – замальовування фону, заповнення багатокутників, стиск/розтягування бітових образів;

режими відображення – налаштування системи координат, встановлення початку координат, встановлення порту огляду, співвідношення масштабів за осями координат, перетворення системи координат та інше;

функції малювання – відсічення багатокутників, малювання ліній, відображення багатокутників та інше;

способи відображення бітових масивів;

способи відображення тексту.

Усе, наведене вище стосується не тільки базового класу, але й класів нащадків. Вони в основному відрізняються від базового конструктором та деструктором та налаштовується за замовчуванням на пристрій (вікно на дисплеї) в який виконуватиметься вивід.

 

<== предыдущая лекция | следующая лекция ==>
Модальні та не модальні діалоги | ЛЕКЦІЯ 1. Базовим класом для шести графічних об’єктів Windows CPen, CBrush, CBitmap, CFont, CPalette та CRgn є CGdiObject
Поделиться с друзьями:


Дата добавления: 2013-12-14; Просмотров: 571; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.008 сек.