На этом шаге мы рассмотрим системы координат.
В заданной по умолчанию логической системе координат, используемой в VPI, ось X направлена слева направо, а ось Y - сверху вниз. По умолчанию, логическими единицами являются элементы экранного изображения (пиксели). Точка (0,0) - это пиксель, находящийся в верхнем левом углу области представления. Так как координаты отсчитываются от нуля, любая попытка доступа к пикселю с координатами (Width, Height) будет отвергнута, поскольку он может находиться вне области представления и, фактически, на ограничивающем прямоугольнике.
При создании, перемещении или изменении размеров дочернего окна используются координаты относительно родительского окна (Parent Coordinates), а при работе с окнами Task и диалоговыми окнами - всегда экранные координаты (Screen Coordinates).
При рисовании или выполнении любых подобных операций в окне используются координаты относительно клиентской области окна (Client Coordinates).
Однако иногда нужно преобразовать координаты в одном окне к координатам другого окна. Для этой цели существует предикат win_MapPoints, который может преобразовывать координаты относительно одного окна в координаты относительно другого окна:
NewPntList=win_MapPoints(FromWindow,ToWindow,OldPntLists).
Например, если ToWin - родительское окно окна FromWindow, тогда win_MapPoints повторно вычисляет координаты точек клиентской области в координатах родительского окна, а если ToWin - весь экран, тогда win_MapPoints преобразовывает координаты клиентской области к экранным координатам (и наоборот).
Напомним, что прямоугольники всегда задаются структурой
rct(Left,Top,Right,Bottom).
Обычно координаты выражены в пикселях, которые удобны при работе с редакторами, меню, деревьями, панелями инструментов и т. д. Разрешающая способность экрана выражается как размер в пикселях по направлениям X и Y (например, 640x480 или 1024x768), несмотря на то, что более правильным было бы указание числа пикселов в сантиметрах или дюймах. Шаг расположения точек измеряется расстоянием от центра одного пиксела до центра соседнего, что, конечно же, является инверсией к разрешающей способности. Экраны с более высокой разрешающей способностью имеют большее количество пикселей, что позволяет одновременно представлять больше информации на экране. Увеличенная вдвое разрешающая способность позволила бы представить в 4 раза больше информации без потери качества изображения, однако каждый элемент становится в 4 раза меньше, что затрудняет его рассмотрение.
На следующем шаге мы рассмотрим курсор.