В отличие от текстового режима в следующих пяти режимах: 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
Рис. Четырехквадрантная системы координат
Только в двух данных режимах можно изменять масштабный коэффициент, используемый 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);
+Y
+X 1000
Рис. Адаптация режима MM_ISOTROPIC
В данном случае нельзя отображать что-либо в правой части рабочей области окна, так как в этом случае x–координата будет больше 1000.
Если же высота рабочей области окна больше, чем ее ширина, то логическая система координат будет расположена следующим образом:
+Y
+X 1000
Рис. Адаптация режима MM_ISOTROPIC
В данном случае вы не можете отображать что-либо в верхней части рабочей области окна, так как в этом случае y–координата будет больше 1000.