Читайте также:
|
|
Под типом логической системы координат понимается то, как направлены координатные оси и каковы единицы измерения по каждой из координатных осей. В Windows существует несколько типов логических систем координат.
Для установки типа системы координат используется метод контекста устройства SetMapMode (), а для получения типа системы координат - метод GetMapMode ().
Режимы отображения
В процессе вывода изображения функции графического интерфейса GDI преобразуют логические координаты в физические. Для определения способа такого преобразования используется атрибут с названием режим отображения (mapping mode), который хранится в контексте устройства вывода.
Для указания режима отображения в файле windows.h определены символьные константы с префиксом MM_ (от Mapping Mode - режим отображения).
Восемь существующих режимов отображения координат задаются с помощью символьных констант, определенных в файле Wingdi.h:
#define MM_TEXT // 1 лог. ед. - 1 пиксел
#define MM_LOMETRIC // 1 лог. ед. - 0,1 мм
#define MM_HIMETRIC // 1 лог. ед. - 0,01 мм
#define MM_LOENGLISH // 1 лог. ед. - 0,01 дюйма
#define MM_HIENGLISH // 1 лог. ед. - 0,001 дюйма
#define MMJTWIPS //1 лог. ед. - 1/1440 дюйма
//========== Преобразования по формуле ==========//
#define MM_ISOTROPIC // Растяжение одинаково
#define MM_ANISOTROPIC // Растяжение различно
По умолчанию действует режим ММ_ТЕХТ, в котором ось Y имеет направление сверху вниз. Последующие пять режимов предполагают, что ось Y направлена снизу-вверх.
Очень интересны режимы отображения MM_ISOTROPIC и MM_ANISOTROPIC. Оба этих режима отображения используются в основном, когда программисту требуется построить максимально большое изображение внутри окна, которое будет часто изменять свои размеры.
Пример вывода строки текста с использованием логических координат (10, 20):
Свойства системы координат можно менять. Описание логической системы координат задается контекстом устройства. Чтобы логические координаты могли интерпретироваться физическим устройством, используется следующий механизм.
Графическое устройство имеет свою собственную фиксированную физическую систему координат. Контекст устройства содержит атрибуты, задающие соответствие между логическими и физическими координатами точки, что позволяет при выводе на графическое устройство произвести преобразование логических координат в физические. Графическое устройство осуществляет вывод в прямоугольную область отображения (viewport). Начало системы координат находится в левом верхнем углу области, первая координатная ось (Х) направлена горизонтально слева направо, вторая - Y вертикально сверху вниз. Единицей измерения является пиксел.
При выводе на дисплей в системе Windows существует как бы три графических устройства, зависящих от типа экранной области, в которую осуществляется вывод. Вывод может производиться:
Для каждого из этих графических устройств можно создать свой тип контекста устройства.
Тип логической системы координат (mapping mode) является атрибутом контекста устройства. Соответствие между системой координат области отображения и логической системой координат окна задается атрибутами:
Используя эти атрибуты, Windows преобразует логические координаты в физические и выводит на графическое устройство.
Каждая из систем координат имеет свою выделенную точку. Выделенная точка логической системы координат определяется атрибутом window origin (выделенная точка окна), а выделенная точка физической системы координат - атрибутом viewport origin (выделенная точка области отображения). Соответствие устанавливается наложением двух систем так, чтобы выделенные точки совпадали. Выделенные точки задают, каким образом системы координат размещены одна относительно другой.
Работа с выделенными точками обеспечивается методами класса CPoint:
Для систем координат типа MM_TEXT, MM_LOMETRIC, MM_HIMETRIC, MM_LOENGLISH, MM_HIENGLISH, MM_TWIPS выделенные точки полностью задают соответствие. Значение двух других атрибутов соответствия для этих типов систем координат фиксированы и не могут меняться программистом.
Соответствие между логическими и физическими координатами точки можно выразить формулами:
xViewPort = (xWindow - xWinOrg) * xScale + xViewOrg,
yViewPort = (yWindow - yWinOrg) * yScale + yViewOrg,
где (xViewPort, yViewPort) - координаты произвольной точки А в физической системе; (xWindow, yWindow) - координаты произвольной точки А в логической системе; (xViewOrg, yViewOrg) - координаты выделенной точки в физической системе; (xWinOrg, yWinOrg) - координаты выделенной точки в логической системе.
Значение xScale равно количеству пикселей, приходящихся на одно деление оси X, а yScale - количеству пикселей, приходящихся на одно деление по оси Y.
Эти значения задаются атрибутами меры протяженности логической системы координат (window extents) и меры протяженности физической системы координат (viewport extents).
Для всех выше перечисленных типов систем координат они фиксированы для данного физического устройства, и программист не может их изменить. Иначе дело обстоит с системами координат типа MM_ISOTROPIC, MM_ANISOTROPIC. Для них единицей измерения является условная единица. Количество пикселов, приходящихся на одно деление в логической или физической системе координат, может быть установлено атрибутами меры протяженности логической системы координат (window extents) и меры протяженности физической системы координат (viewport extents). Каждый из атрибутов представляет собой пару чисел - меру протяженности по оси X и меру протяженности по оси Y ((xWinExt, yWinExt) и (xViewExt, yViewExt)).
Понятие "мера протяженности" можно представить, как точку на оси X или Y или как "эталонный отрезок" от начала системы координат до этой точки. При установлении соответствия между логической и физической системами координат точки в логической и физической системах координат совмещаются растяжением (или сжатием) логической системы по осям X и Y. Меры протяженности задают значения xScale и yScale так:
xScale = xViewExt / xWinExt, yScale = yViewExt / yWinExt.
Дата добавления: 2015-09-03; просмотров: 126 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Требования к программному и аппаратному обеспечению Windows приложений. Требования к программному обеспечению. Требования к аппаратуре. | | | Доступ к оболочке Windows. Поля вывода. Изменение пределов поля вывода и окна. Координаты, определяемые пользователем. Выбор начальных атрибутов окна. |