Окт 13

Страничная система координат и режимы отображения

Обе рассмотренные системы координат ограничиваются представлением в виде аппаратно-зависимого массива пикселов. Размер окна на экране с высоким разрешением отличается от размера окна при низком разрешении, а толщина напечатанной линии из трех пикселов будет зависеть от разрешения принтера. Чтобы графическое программирование в меньшей степени зависело от устройства, Win32 GDI позволяет приложениям создавать собственные логические системы координат, приближенные к их геометрическим моделям. В таких системах координат удобнее работать, и они гораздо меньше зависят от оборудования.
Одной из двух логических систем координат в Win32 API является страничная система координат. Это единственная логическая система координат, которая поддерживается 16-разрядными ОС семейства Windows и даже реализациями Win32 в Windows 95/98. Мировые координаты, которые являются второй логической системой координат, поддерживаются только в Windows NT/2000. По историческим причинам в Windows под логической системой координат обычно понимается именно страничная система.
При отображении страничных координат в координаты устройства используются два базовых понятия компьютерной графики:
окно (window);
а область просмотра (viewport).
Иногда можно встретить другие термины для обозначения этих же понятий, когда окно называют логической областью вывода, а область просмотра — физической областью вывода.
Окном называется любая прямоугольная область в страничной системе координат.
Областью просмотра называется прямоугольная область в системе координат устройства. Таким образом, окно определяет отображаемую часть геометрической модели, а область просмотра — ее расположение на поверхности устройства. Соотношение между размерами определяет масштаб вывода.
Для формализации рассматриваемых преобразований следует ввести несколько понятий.
Для всех четырех функций в качестве последнего параметра можно передать значение NULL, если сам параметр не используется.
Использование функций SetWindowOrgEx и SetViewportOrgEx требует дополнительных пояснений. Первая функция устанавливает, какая именно точка логического пространства отображается в точку (0,0) физического пространства1. Соответственно, вторая функция устанавливает, какая точка физического пространства отображается в точку (0, 0) логического пространства. Но учтите, что одновременное использование обеих функций запрещено! Остановите свой выбор на одной из них, так как обе функции позволяют добиться одного и того же результата.
Пример использования приведенных функций для настройки страничной системы координат можно найти в листинге 2.3.
Для упрощения работы программиста Win32 API содержит несколько заготовок страничных систем координат, называемых режимами отображения (mappingmodes).
В большинстве режимов отображения устанавливаются заранее выбранные габариты окна и области просмотра. Эти габариты определяют размер единицы измерения в страничной системе координат и коэффициент масштабирования при-переходе к системе координат устройства. Впрочем, приложение может изменить положение начала координат окна и области просмотра, что позволяет выводить различные фрагменты геометрической модели в разных частях экрана.