- •Процедурное программирование
- •Регистрация класса окна
- •Создание окна
- •Командная строка приложения
- •Функции окна приложения
- •Сообщение wm_destroy
- •Вывод в рабочую область окна
- •Контекст устройства и область отрисовки.
- •Сообщение wm_paint
- •Окно-список
- •Заполнение окна-списка
- •Список файлов
- •Изменение цвета органов управления
- •Комбинированный список
- •Меню и назначение клавиш
- •Создание описания меню в файле ресурсов
- •Сообщения меню
- •Диалоговые окна ( диалоги )
- •Определение диалоговых окон в файле ресурсов
- •Диалоговое окно About
- •Функция диалогового окна
- •Взаимодействие с органами управления диалоговых окон
- •Окно сообщений
- •Ввод данных
- •Извлечение данных из диалога
- •Ввод - вывод данных посредством передачи сообщений
- •Функция CreateFile ( )
- •Функция WriteFile ( )
- •Отображение файла в память
- •Функция CreateFileMapping().
- •Функция MapViewOfFile()
- •Работа с отображенным файлом
- •И н т е р ф е й с графических устройств (gdi)
- •Контекст устройства
- •Получение индекса контекста устройства
- •Получение информации из контекста устройства
- •Атрибуты контекста устройства
- •Сохранение изменений в контексте устройства
- •Система координат в Windows
- •Режимы отображения
- •Системы координат
- •Режим mm_text
- •Метрические режимы
- •Режим mm_isotropic
- •Режим mm_anisotropic
- •Вывод графических объектов
- •Двумерные объекты
- •Сегмент и сектор эллипса
- •Библиографический список
Метрические режимы
В отличие от текстового режима в следующих пяти режимах: MM_LOMETRIC, MM_HIMETRIC, MM_LOENGLISH, MM_HIENGLISH и MM_TWIPS, - оси координат направлены соответственно: ось x – вправо, а ось y – вверх.
+X
-Y
Рис. Метрические режимы отображения
Заметим, что по умолчанию предполагается, что начало координат расположено в левом верхнем углу рабочей области окна. Если необходимо, чтобы начало координат располагалось в левом нижнем углу, то можно воспользоваться функцией SetViewportOrgEx.
SetViewportOrgEx (hDC, 0,yClient, NULL);
Теперь начало координат будет находиться в левом нижнем углу:
Рис. Перенос начала координат
Для получения четырех квадрантной системы координат с началом, находящимся в центре рабочей области окна, используйте следующий вызов функции :
SetViewportOrg (hDC, xClient/2, yClient/2);
+Y
-X +X
-Y
Рис. Четырехквадрантная системы координат
Режим mm_isotropic
Только в двух данных режимах можно изменять масштабный коэффициент, используемый Windows при преобразовании логических координат в физические.
В режиме MM_ISOTROPIC физические размеры логической единицы измерения по осям x и y совпадают. При этом можно изменять логические размеры единицы измерения.
Данный режим удобно использовать при выводе на экран различных графических изображений. При этом достигается наибольшее правдоподобие, так как физические размеры объектов с одинаковыми логическими размерами совпадают. Например, прямоугольник с одинаковыми логическими размерами сторон будет отображаться как квадрат. Размер экрана может меняться.
Для изменения масштабного коэффициент предназначены функции SetViewportExtEx и SetWindowExtEx.
Как правило, функция SetWindowExt используется с параметрами, описывающими логические размеры логического окна, а функция SetViewportExt – с параметрами, описывающими ширину и высоту окна.
Предположим, вы хотите получить систему координат, начало которой находится в левом нижнем углу, физические размеры единицы измерения по осям x и y совпадают и размеры рабочей области окна ранжированы в интервале от 0 до 1000 по каждой оси. Для получения такой системы координат можно воспользоваться следующей группой функций:
SetMapMode (hDC, MM_ISOTROPIC);
SetWindowExtEx (hDC, 1000, 1000);
SetViewportExtEx (hDC, xClient, yClient);
SetViewportOrgEx (hDC,0, yClient);
1000
+Y
+X 1000
Рис. Адаптация режима MM_ISOTROPIC
В данном случае нельзя отображать что-либо в правой части рабочей области окна, так как в этом случае x–координата будет больше 1000.
Если же высота рабочей области окна больше, чем ее ширина, то логическая система координат будет расположена следующим образом:
1000
+Y
+X 1000
Рис. Адаптация режима MM_ISOTROPIC
В данном случае вы не можете отображать что-либо в верхней части рабочей области окна, так как в этом случае y–координата будет больше 1000.