BOOL LineTo (POINT point)
Проводить лінію пером, завантаженим в контекст пристрою, з фокуса в точку, передану функції як параметр.
бітові образи
Бітові образи - дуже важлива частина Windows. При зберіганні бітових образів в окремому файлі, зазвичай використовується розширення BMP (це єдиний растровий формат, який безпосередньо підтримується Windows). Бітові образи можуть зберігатися і в ресурсах. Бітові образи використовуються частіше, ніж всі інші ресурси. Це пояснюється наявністю для них надзвичайно потужної підтримки. У Windows багато речей, які можна легко намалювати програмно, відображаються за допомогою готових бітових образів. Наприклад, кнопки в натиснутому і відпущеному стані, каркаси для цілих вікон. Так як комп'ютери тепер мають великі жорсткі диски, то вибір між програмним малюванням об'єкта і готової картинкою часто однозначно вирішується на користь останньої.
Створення бітових образів
Висновок бітового образу на екран
Коли бітовий образ поміщений в ресурси, його можна виводити на екран. Спочатку необхідно створити об'єкт типу CBitmap і за допомогою функції LoadBitmap () завантажити в нього бітовий образ з ресурсів. Прототип функції:
Параметр визначає строковий ідентифікатор ресурсу. Після завантаження бітового образу, його необхідно вивести в клієнтську область вікна. Для цього обробник WM_PAINT повинен містити приблизно такий код (передбачається, що бітовий образ завантажений в об'єкт backgroundBitmap):
Спочатку оголошуються два контексту пристрою. Перший пов'язаний з поточним вікном. Другий не инициализирован і призначений для області пам'яті, в якій буде зберігатися зображення. Потім, за допомогою функції CreateCompatibleDC (...). цей контекст оголошується сумісним з контекстом вікна. Функція має прототип:
Область пам'яті використовується для виведення зображення на екран. Перед виведенням на екран зображення повинно бути вибрано в контекст пристрою, пов'язаний з областю пам'яті, за допомогою функції SelectObject (...). Ми використовуємо її варіант з прототипом:
Параметр pBmp - це покажчик на об'єкт бітового образу. Для виведення зображення на екран використовується функція BitBlt (...). яка копіює зображення з вихідного контексту пристрою в контекст, пов'язаний із зухвалим функцію об'єктом. Прототип функції такої:
Налаштування системи координат
Стандартні функції каркаса MFC для настройки систем координат
У MFC вбудовані функції для настройки апаратної і логічної систем координат. Також передбачені функції переходу від однієї до іншої. Завдання програміста полягає в тому, щоб визначити, коли і яку систему координат використовувати.
Основні правила при роботі з системами координат:
- Всі параметри, що передаються в методи CDC. - це логічні координати.
- Всі параметри, що передаються в методи CWnd, - це апаратні координати.
- Значення, що зберігаються тривалий час, повинні використовувати логічні координати.
Розглянемо функції для роботи з системами координат.
Функція virtual int SetMapMode (int nMapMode) встановлює напрямки осей і визначає логічні одиниці. Можливі значення параметра nMapMode наведені в таблиці:
Одна логічна одиниця дорівнює одному пікселю, вісь x спрямована вправо, вісь у - вниз. Режим за умовчанням установлюється.
Одна логічна одиниця дорівнює 0.001 дюйма, вісь x спрямована вправо, вісь у - вгору.
Одна логічна одиниця дорівнює 0.01 міліметра, вісь x спрямована вправо, вісь у - вгору.
Одна логічна одиниця дорівнює 0.01 дюйма, вісь x спрямована вправо, вісь у - вгору.
Одна логічна одиниця дорівнює 0.1 міліметра, вісь x спрямована вправо, вісь у - вгору.
Режим дозволяє налаштовувати (за допомогою функцій SetWindowExt і SetViewportExt) розмірність (окремо для кожної з осей), їх напрямки та початок відліку
Режим дозволяє налаштовувати (за допомогою функцій SeWindowExt і SetViewportExt) розмірність осей, їх напрямки та початок відліку, одиниця осі x дорівнює одиниці осі у.
Одна логічна одиниця - твіпс (twips) - дорівнює 1/20 пункту (point) або 1/1440 дюйма, вісь x спрямована вправо, вісь у - вгору.
Функції для переміщення центрів систем координат: virtual CPoint SetViewportOrg (CPoint point) і СPoint SetWindowOrg (CPoint point). Перша зміщує центр апаратних координат, а друга - логічних, в точку, передану в якості параметра. Обидві функції повертають координати попереднього центру.
Функції virtual CSize SetViewportExt (CSize size) і virtual CSize SetWindowExt (CSize size) використовуються для завдання одиниць виміру. Перша функція встановлює одиниці виміру апаратної системи координат, друга - логічної.
Для переходу від апаратних координат до логічних використовується функція void DPtoLP (LPPOINT lpPoints, int nCount = 1) const. а для переходу від логічних до апаратних - void LPtoDP (LPPOINT lpPoints, int nCount = 1) const. Аргументами обох функцій є покажчик на масив з точками, які потрібно перетворити, і розмірність цього масиву.
Ці функції універсальні, добре підходять для використання в задачах, де не потрібні складні перетворення системи координат. Для здійснення складних багаторівневих перетворень рекомендується вводити власні функції перетворення системи координат.