Access 2002

Различное количество пикселей


Однако различное количество пикселей при разных разрешениях — это только одна часть проблемы, с которой вы столкнетесь при масштабировании форм. Вам нужно подумать еще и о количестве пикселей, приходящихся на логический дюйм пространства экрана. Каждый драйвер индивидуально контролирует размер пикселя по отношению к тому, что Windows считает «дюймом». Эту информацию можно получить у Windows через вызовы ее API, что мы и сделаем далее в этом разделе. Нас прежде всего интересует размер пикселя в твипах. (Твип — это 1/1440 дюйма.) Обычно у экранов с разрешением 640×480 размер пикселя равен 15 твипам (хотя это и не всегда так). Это значит, что при таком низком разрешении 100 пикселей составляют 1500 твипов (то есть немногим больше одного логического дюйма), а при более высоких разрешениях 100 пикселей равны 1200 твипам (то есть меньше одного логического дюйма). Чтобы правильно масштабировать форму, нужно принять во  оба значения. Разрабатывая форму, вы должны знать не только размеры экрана пользователя в пикселях, но и размер пикселя в твипах.

Модуль класса FormResize (и модули его вспомогательных классов SectionResize и Control Resize) содержат все необходимое для масштабирования формы при ее загрузке и изменения ее размера пользователем во время выполнения приложения. В нем активно используются функции Windows API с целью получения информации о текущем состоянии и размерах форм. (Более подробную информацию о работе с Windows API и вызове функций из DLL вы найдете в главе 14.)

Может показаться, что для масштабирования формы в соответствии с текущим разрешением экрана достаточно вычислить отношение между исходным и текущим количеством пикселей на экране по горизонтали и по вертикали и умножить на эти коэффициенты размеры формы. На самом деле, из-за того что размеры формы в Access определяются в твипах, а размер пикселя в твипах при изменении разрешения экрана меняется, вычисления получаются несколько более сложными. Коэффициент, на который нужно умножить ширину формы при переходе от разрешения 640×480 к 1024×768, не равен просто 1024/640.

Комментарии закрыты