Найти координаты для точки на экране? - PullRequest
3 голосов
/ 17 сентября 2009

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

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

Ответы [ 3 ]

7 голосов
/ 17 сентября 2009

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

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

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

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

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

0 голосов
/ 17 сентября 2009

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

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

0 голосов
/ 17 сентября 2009

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

...