Выбор режима отображения
5.5.1 Физические и логические координаты
Физические координаты имеют отношение непосредственно к физическому устройству вывода. Здесь, в качестве единицы измерения всегда используется пиксел. Если устройство вывода - монитор, то физические координаты носят название экранных координат. Начало этой системы координат располагается в левом верхнем углу (рис. 5.1).
Чтобы определить физическое разрешение монитора, следует использовать функциюGetDeviceCaps:
HDC hdc;
intnVertRes, nHorzRes,
hdc = CreateDC("DISPLAY", NULL, NULL, NULL);
nVertRes=GetDeviceCaps(hdc, VETREZ);nHorzRes =GetDeviceCaps(hdc, HORZRES);
DeleteDC(hdc);
Использование физических координат неудобно по двум причинам.
Рисунок 5.1. Физическая система координат монитора
Во-первых, разрешение зависит от типа видеоконтроллера, а во-вторых, что самое главное, от видеоконтроллера зависит отношения высоты к ширине пиксела. Потому, если вы попробуете в физической системе координат нарисовать квадрат, например 50 х 50 пикселов, то, в общем случае, вы получите прямоугольник. По той же причине вместо окружности получится эллипс. Избежать этих неприятностей помогает логическая система координат.
5.5.2 Логическая система координат
Приложение может использовать несколько логических координат. Но постарайтесь не использовать более одной, так как в них очень легко запутаться. Здесь можно использовать любое направление координатных осей. можно выбирать начало системы координат.
Для установки режима отображения, определяющего направление осей и размер логической единицы системы координат, используется функция SetMapMode.
Int SetMapMode(
HDC, // дескриптор контекста отображения
int nMapMode II режим отображения
);
Функция возвращает режим отображения установленный ранее.
Параметр nMapMode может принимать одно от следующих значений:
Режим отображения nMapMode | Направление оси X | Направление оси Y | Размер одной логической единицы | V |
MM_TEXT | Вправо | Вниз | 1 пиксел (физическая система координат) | |
MM_LOMETR1C | Вправо | Вниз | 0,1 мм. | |
MM_HIMETRIC | Вправо | Вниз | 0,01 мм. | |
MM_LOENGLISH | Вправо | Вниз | 0,01 дюйм. | |
MM H1ENCL1SH | Вправо | Вниз | 0,001 дюйм | |
MM_TWIPS | Вправо | Вниз | 1/1440 дюйма | |
MM _ISOTROPIC | Можно выбирать | Можно выбирать | Произвольный, одинаковый для осей Х и Y | |
MM_ANISOTROPIC | Можно выбирать | Можно выбирать | Произвольный, может быть разный для осей Х и Y |
ФункцияGetMapMode может в любой момент определить текущий режим отображения:
Дата добавления: 2017-01-26; просмотров: 1497;