КАТЕГОРИИ: Архитектура-(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(); … Крім встановлення об’єктів малювання функціями контексту пристрою встановлюється: режими малювання – замальовування фону, заповнення багатокутників, стиск/розтягування бітових образів; режими відображення – налаштування системи координат, встановлення початку координат, встановлення порту огляду, співвідношення масштабів за осями координат, перетворення системи координат та інше; функції малювання – відсічення багатокутників, малювання ліній, відображення багатокутників та інше; способи відображення бітових масивів; способи відображення тексту. Усе, наведене вище стосується не тільки базового класу, але й класів нащадків. Вони в основному відрізняються від базового конструктором та деструктором та налаштовується за замовчуванням на пристрій (вікно на дисплеї) в який виконуватиметься вивід.
Дата добавления: 2013-12-14; Просмотров: 587; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |