Поделиться через


Координаты Windows Forms

Система координат для формы Windows Forms основана на координатах устройства, а базовая единица измерения при рисовании в Windows Forms — это единица устройства (обычно пиксель). Точки на экране описываются парами координат x и y, при этом координаты x увеличиваются слева направо, а координаты y увеличиваются сверху вниз. Расположение точки отсчета относительно экрана зависит от того, указываете ли вы указываете экранные или клиентские координаты.

Экранные координаты

Приложение Windows Forms указывает положение окна на экране в экранных координатах. Для экранных координат точкой отсчета является верхний левый угол экрана. Полная позиция окна часто описывается структурой Rectangle, содержащей экранные координаты двух точек, которые определяют верхний левый и нижний правый углы окна.

Клиентские координаты

Приложение Windows Forms указывает положение точек в форме или элементе управления с помощью клиентских координат. Точкой отсчета клиентских координат является верхний левый угол клиентской области элемента управления или формы. Клиентские координаты гарантируют, что приложение может использовать согласованные значения координат во время рисования в форме или элементе управления независимо от положения формы или элемента управления на экране.

Размерность клиентской области также описывается структурой Rectangle, содержащей клиентские координаты для области. Во всех случаях верхняя левая координата прямоугольника входит в клиентскую область, а нижняя правая координата не входит. Графические операции не включают правый и нижний края клиентской области. Например, метод FillRectangle будет охватывать область вплоть до правого и нижнего краев указанного прямоугольника, но не будет включать эти края.

Сопоставление координат одного типа с координатами другого типа

Иногда может потребоваться сопоставить экранные координаты с клиентскими. Это можно сделать довольно просто с помощью методов PointToClient и PointToScreen, доступных в классе Control. Например, свойство MousePositionControl сообщается в экранных координатах, но вам может потребоваться преобразовать их в клиентские координаты.

См. также