Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
СПО_экзамен.doc
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
500.22 Кб
Скачать

3. Логическая и физическая система координат

Существует 2 понятия координат: логические координаты и физические координаты. Физические координаты имеют отношение к физическому устройству вывода, например, экрану. Здесь в качестве единицы измерения длины используется пиксел.

Логическая система координат – условная система, где единица измерения зависит от режима отображения. Windows поддерживает восемь режимов отображения. По умолчанию начало координат находится в левом верхнем углу области вывода, при этом ось Х направлена слева направо, а ось У – сверху вниз.

Для настройки системы координат в Windows используется два понятия – физическая область вывода (viewport), координаты и размеры которой задаются в физических единицах – пикселях, и логическая область вывода (window), координаты и размеры которой задаются в логических единицах, определяемых режимом рисования.

Основная функция которая позволяет выбрать режим, а значит и систему координат – SetMapMode.

SetMapMode(hdc,MM_LOMETRIC);

Особенность режима LOMETRIC состоит в том, что логическая единица соответствует 1/10 миллиметра или 1/100 сантиметра, а не 1 пикселю, размер которого зависит от видеоконтроллера.

Поскольку в нашем режиме ось OY направлена вверх, т.е. логическое начало координат находится в левом нижнем углу, то необходимо перенести нашу точку(начало координат) в данную физическую точку (левый нижний угол рабочей области) с помощью функции SetViewportOrgEx:

SetViewportOrgEx(hdc,0,645,NULL);

Т.е. логическая точка (0,0) будет находиться в точке с физическими координатами(0, 645).

4. Режимы преобразования координат

Вы можете устанавливать режим отображения, используя функцию:

SetMapMode (hdc, iMapMode);

Определить текущий режим отображения вы можете путем вызова:

iMapMode = GetMapMode (hdc);

По умолчанию установлен режим MM_TEXT. Â этом режиме отображения логические единицы эквивалентны физическим единицам, что позволяет нам (или заставляет нас) работать непосредственно в терминах пикселей.

Если же вы хотите рисовать образы в реальных единицах измерения, таких как миллиметры или дюймы, то вы можете получить нужную вам информацию из функции GetDeviceCaps и осуществлять свое собственное масштабирование.

Режим

Логическая единица

Координата X

Координата Y

Возрастание координат

MM_HIENGLISH

0,001 дюйма

Слева направо

Снизу вверх

MM_HIMETRIC

0,01 мм

Слева направо

Снизу вверх

MM_ISOTROPIC

Произвольное

Определяется

Определяется

MM_LOENGLISH

0,01 дюйма

Слева направо

Снизу вверх

MM_LOMETRIC

0,1 мм

Слева направо

Снизу вверх

MM_TEXT

Пиксель устройства

Слева направо

Сверху вниз

MM_TWIPS

1/1440 дюйма

Слева направо

Снизу вверх