Найти координаты для точки на экране?

Дело в том, что у меня есть некоторая графика, показанная в форме, например, в прямоугольнике, и я хочу сделать снимок, когда точка пройдет над полями. Поэтому я попытаюсь найти координаты для этих прямоугольников, но, поскольку они являются координатами в форме, они не совпадают с координатами с расположением мыши.

Так что мне интересно, есть ли способ узнать, какие координаты на экране есть у точки, а не в форме или контроллере?

3 ответа

Решение

Каждый элемент управления имеет методы PointToFoo для преобразования. Обратите внимание, что вы должны вызывать это из родительского объекта, местоположение которого вы хотите:

Point scrPos = this.PointToScreen(panel1.Location);

Кроме того, вы можете получить координаты экрана панели с помощью:

Point scrPos = panel1.PointToScreen(new Point(0,0));

Обратите внимание, что приведенные выше два примера могут привести к разным результатам из-за размера рамки панели.

Вы знаете, в каких координатах находится указатель? Вы можете получить координаты для вашего окна с вызовом GetWindowRect() и вычтите верхний / левый из курсора мыши, чтобы получить координаты клиента.

Кажется, я помню, что на самом деле есть функция, которая делает это для вас, но прошло уже некоторое время с тех пор, как я копался в пользовательских элементах управления GUI.

Если вы используете графический объект для формы, позвонив this.CreateGraphics() внутри формы координаты, используемые при рисовании прямоугольника, должны быть точно такими же, как и те, которые возвращаются событием click в форме.

Другие вопросы по тегам