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


Режимы отображения описаны в нижеследующей таблице.

Режим отображения Описание
MM_ANISOTROPIC Каждая единица измерения в пространстве страницы отображается в определяемой приложением единице в пространстве устройства. Ось может или не может быть одинаково масштабируемой (например, круг, рисуемый в мировом пространстве, может казаться эллипсом, когда изображается на данном устройстве). Ориентация оси также определяется приложением.
MM_HIENGLISH Каждая единица измерения в пространстве страницы отображается как 0.001 дюйма в пространстве устройства. Значение x возрастает слева направо. Значение y возрастает снизу вверх.
MM_HIMETRIC Каждая единица измерения в пространстве страницы отображается как 0.01 миллиметра в пространстве устройства. Значение x увеличивается слева направо. Значение y увеличивается снизу вверх.
MM_ISOTROPIC Каждая единица измерения  в пространстве страницы отображается как определяемая приложением единица в пространстве устройства. Оси всегда одинаково масштабируются. Ориентация осей может определиться приложением.
MM_LOENGLISH Каждая единица измерения в пространстве страницы отображается как 0.01 дюйма в пространстве устройства. Значение x увеличивается слева направо. Значение y увеличивается снизу вверх.
MM_LOMETRIC Каждая единица измерения в пространстве страницы отображается как 0.1 миллиметра в пространстве устройства. Значение x увеличивается слева направо. Значение y увеличивается снизу вверх.
MM_TEXT Каждая единица измерения в пространстве страницы отображается как один пиксель; то есть, никакого масштабирования не выполняется вообще. Когда в действительности никакого преобразования не выполняется (это - значение по умолчанию), пространство страницы в режиме отображения MM_TEXT эквивалентно пространству физического устройства. Значение x увеличивается слева направо. Значение y увеличивается сверху вниз.
MM_TWIPS Каждая единица измерения в пространстве страницы отображается как 1/20 полиграфического пункта (1/1440 дюйма). Значение x увеличивается слева направо. Значение y увеличивается снизу вверх.
 

Чтобы установить режим отображения, вызовите функцию SetMapMode. Текущий режим отображения для контекста устройства (DC) извлекается при помощи вызова функции GetMapMode.

Преобразования пространства страницы в пространство устройства состоят из значений, вычисленных от точек, данных окном и областью просмотра. В этом контексте, окно ссылается на логическую систему координат пространства страницы, в то время как область просмотра ссылается на систему координат пространства устройства. Окно и область просмотра каждый состоит из начала координат, горизонтальной ("x") величины и вертикальной ("y") величины. Параметры окна определяются в логических координатах; область просмотра - в координатах устройства (пикселях). Система комбинирует начала координат и величины и от окна и от области просмотра, чтобы создать преобразование. Это означает, что окно и область просмотра, каждый определяет половину коэффициентов, которые должны  определить преобразование, используемое, чтобы отобразить точки пространства страницы в пространстве устройства. Таким образом, система отображает начало координат окна в начале координат области просмотра, а величину окна размерами области просмотра, как показано на нижеследующей иллюстрации.

Начало координат окна в пространстве страницы и начало координат  области просмотра в пространстве устройства

Размеры окна и области просмотра устанавливают отношение или коэффициент масштабирования, используемый в преобразованиях пространства страницы в пространство устройства. Для шести предопределенных режимов отображения (MM_HIENGLISH, MM_LOENGLISH, MM_HIMETRIC, MM_LOMETRIC, MM_TEXT и MM_TWIPS), размеры устанавливаются системой, когда вызывается  функция SetMapMode. Они не могут измениться. Другие два режима отображения (MM_ISOTROPIC и MM_ANISOTROPIC) требуют, чтобы размеры определялись. Это делается при помощи вызова функции SetMapMode, чтобы установить соответствующий режим, а затем при помощи вызова функций SetWindowExtEx и SetViewportExtEx определить эти величины. В режиме отображения MM_ISOTROPIC, важно вызвать SetWindowExtEx перед вызовом SetViewportExtEx.

Начала координат окна и области просмотра устанавливают преобразование, используемое в преобразованиях пространства страницы в пространство устройства. Установите начала координат окна и области просмотра при помощи использования функции SetWindowOrgEx и SetViewportOrgEx. Начала координат независимы от размеров и приложение может установить их независимо от текущего режима отображения. Изменение режима отображения не оказывает влияния на текущую установку начала координат (хотя это может оказать влияние на размеры). Начала координат определяются в абсолютных единицах, на которые текущий режим отображения не влияет. Чтобы изменять начала координат, используйте функции OffsetWindowOrgEx и OffsetViewportOrgEx.

Нижеследующая формула показывает математику, примененную в переносе точки из пространства страницы в пространства устройства

Dx = ((Lx - WOx) * VEx / WEx) + VOx

Ниже переменные, которые применяются.

Dx       значение x в единицах измерения устройства 
Lx      значение x в логических единицах измерения (известное также
                 как единица измерения пространства страницы) 
WOx     начало координат x окна 
VOx     начало координат x области просмотра
WEx     x-протяженность окна 
VEx     x-протяженность области просмотра 

То же самое уравнение с y вместо x преобразует y компонент точки.

Формула сначала смещает точку из начала ее координат. Это значение, больше не базирующее на начале координат, затем масштабируется в целевую систему координат при помощи отношения величин. Наконец, масштабируемое значение смещается целевым началом координат в его конечное отображение.

Функции LPtoDP и DPtoLP могут использоваться, чтобы преобразовать логические точки в точки устройства, а точки устройства в логические точки, соответственно.

Назад в оглавление
На главную страницу

Hosted by uCoz