Находится ли горячая точка курсора WPF Cross в центре перекрестия? - PullRequest
2 голосов
/ 12 февраля 2010

У меня возникают удивительные трудности с высокоточной пиксельно-ориентированной графической программой в WPF, и я начинаю подозревать, что точка доступа курсора Cursors.Cross находится не в ее центре, как вы ожидаете.

Я отлаживаю, используя Увеличитель в 16x и мышь настроена на самое низкое ускорение. Код основан на DrawTools из CodeProject .

изображение, полученное с помощью лупы http://www.aussiedesignedsoftware.com/img/WPFCrossCursorHotspotOffset.png

Это тот же курсор, который вы получаете в Winforms? Если это так, я могу посмотреть на горячую точку этого курсора - класс Cursor в System.Windows.Input не имеет свойства HotSpot.

UPDATE

Если кто-то ищет обходной путь, в моем случае у меня уже есть вызываемый делегат для фильтрации точек, чтобы я мог реализовать поведение привязки к сетке. Было тривиально сместить точку на 1 для компенсации. Это было намного проще, чем создание собственного курсора, и у меня есть преимущество в том, что я все еще использую стандартный курсор, если его внешний вид должен измениться.

1 Ответ

2 голосов
/ 12 февраля 2010

У меня есть эмпирический ответ, что да, горячая точка смещена.

Я изменил программу, чтобы она могла запускать графические режимы нажатием клавиш, поэтому вам не нужно перемещать мышь.

Используя тот же вид лупы, что и на снимке выше, просто нажмите клавишу для изменения режима, чтобы переключить курсор между стрелкой и крестиком.

Когда я переключаюсь, он рисует курсор так, что черные линии центрируются в верхней левой точке обычного курсора стрелки.

Точка доступа курсора со стрелкой находится на пикселе, на который она указывает (не черный пиксель), так что да, точка пересечения курсора НЕ находится в центре перекрестия!

Вздох

...