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