Ноу Інти, лекція, бібліотека класів mfc

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. Аргументами обох функцій є покажчик на масив з точками, які потрібно перетворити, і розмірність цього масиву.

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

Схожі статті