Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Шпора 130стр.doc
Скачиваний:
93
Добавлен:
15.06.2014
Размер:
2.49 Mб
Скачать

29 Система координат

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

Физические координаты имеют непосредственное отношение к физическому устройству вывода. В качестве единицы измерения длины всегда используется пиксел.

Логические координаты передаются функциям GDI, выполняющим рисование или вывод текста. Используемые единицы измерения зависят от режима отображения.

Режим отображения - это атрибут контекста устройства, влияющий на используемую функциями GDI систему координат.

Режимы отображения

Приложения Windows могут использовать одну из нескольких логических систем координат, устанавливая соответствующий режим отображения в контексте устройства.

Установки режима отображения - функция SetMapMode. Определение режима отображения - функции GetMapMode.

Поддерживаемые GDI режимы отображения с ограничениями:

  • MM_TEXT – начало системы логических координат находится в верхнем левом углу, и значения вертикальных координат увеличиваются вниз.

  • MM_LOENGLISH – начало отсчета находится в левом нижнем углу, и значения вертикальных координат увеличиваются вверх.

  • MM_HIENGLISH начало отсчета находится в левом нижнем углу, и значения вертикальных координат увеличиваются вверх.

  • MM_LOMETRIC – начало отсчета находится в левом нижнем углу, и значения вертикальных координат увеличиваются вверх.

  • MM_HIMETRIC – начало отсчета находится в левом нижнем углу, и значения вертикальных координат увеличиваются вверх.

  • MM_TWIPS – начало отсчета находится в левом нижнем углу, и значения вертикальных координат увеличиваются вверх.

  • MM_ISOTROPIC – можно выбирать произвольное направление осей координат и произвольный (но одинаковый) масштаб для осей.

GDI поддерживает только один режим отображения без ограничений, для которого все сказанное в этом пункте относится полностью – режим MM_ANISOTROPIC - самый универсальный режим. Он позволяет устанавливать произвольное направление осей координат, произвольный масштаб для осей координат, причем для каждой оси можно устанавливать свой собственный масштаб.

Преобразование логических координат в физические координаты:

xViewport = (xWindow — xWinOrg)  (xViewExt/xWinExt) + xViewOrg

yViewport = (yWindow — yWinOrg)  (yViewExt/yWinExt) + yViewOrg

или с помощью функции:

LPtoDP (hdc, pPoints, iNumber);

Преобразование физических координат в логические координаты:

xWindow = (xViewport — xViewOrg)  (xWinExt/xViewExt) + xWinOrg

yWindow = (yViewport — yViewOrg)  (yWinExt/yViewExt) + yWinOrg

где (xWindow, yWindow) — логическая точка для преобразования;

(xViewport, yViewport) — преобразованная точка в координатах устройства.

(xWinOrg, yWinOrg) — начало координат окна в логических координатах;

(xWinExt, yWinExt) — протяженность окна в логических координатах;

(xViewExt, yViewExt) — протяженность области вывода в координатах устройства.

или с помощью функции:

DPtoLP (hdc, pPoints, iNumber);