Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции -Процедурное программирование в Windows.doc
Скачиваний:
13
Добавлен:
13.09.2019
Размер:
742.91 Кб
Скачать

Метрические режимы

В отличие от текстового режима в следующих пяти режимах: 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.