Найти координаты для точки на экране?
-
08-07-2019 - |
Вопрос
Дело в том, что у меня есть некоторая графика, показанная в форме, например, в прямоугольнике, и я хочу сделать снимок, когда точка пройдет над полями. Поэтому я попытаюсь найти координаты для этих прямоугольников, но, поскольку эти координаты в форме, они не совпадают с координатами, расположенными в мышах.
Интересно, есть ли способ найти координаты на экране, которые точка имеет на экране, а не в форме или контроллере?
Решение
Каждый элемент управления имеет методы PointToFoo для преобразования. Обратите внимание, что вы должны вызывать это из родительского объекта, местоположение которого вы хотите:
Point scrPos = this.PointToScreen(panel1.Location);
Кроме того, вы можете получить координаты экрана панели с помощью:
Point scrPos = panel1.PointToScreen(new Point(0,0));
Обратите внимание, что приведенные выше два примера могут привести к разным результатам из-за размера рамки панели.
Другие советы
Если вы используете графический объект для формы, вызывая this.CreateGraphics ()
внутри формы, то координаты, используемые при рисовании прямоугольника, должны быть точно такими же, как и те, которые возвращаются событие клика в форме.
Вы знаете, в каких координатах находится указатель? Вы можете получить координаты для вашего окна с помощью вызова GetWindowRect ()
и вычесть верхний / левый из курсора мыши, чтобы получить клиентские координаты.
Кажется, я помню, что на самом деле есть функция, которая делает это для вас, но прошло уже какое-то время с тех пор, как я копался в пользовательских элементах управления графическим интерфейсом.