Получение целых чисел из MouseEventArgs.GetPosition()?

StackOverflow https://stackoverflow.com/questions/1266828

  •  13-09-2019
  •  | 
  •  

Вопрос

Я получаю значения с плавающей запятой, например (471, 326.723333333333), при вызове MouseEventArgs.GetPosition() на моем пограничном контроле.Хотя я всегда могу округлить числа вручную, мне было интересно, есть ли какая-нибудь настройка для получения целых чисел.

Я думал положить SnapsToDevicePixels на True на моем пограничном контроле помогло бы, но это не так, поскольку это, вероятно, не связано.

Есть идеи?

Спасибо!

Это было полезно?

Решение

В WPF позиционирование всегда будет возвращаться в значениях с плавающей запятой.Если вы хотите округлить его, вам придется сделать это вручную.

Это связано с независимостью разрешения и предусмотрено замыслом.

Другие советы

Поскольку WPF не зависит от устройства и не все устройства имеют одинаковые размеры пикселей, передача MouseEvents с дробными координатами имеет смысл (также вы можете поместить элементы управления в трехмерное пространство, где весь процесс перевода системы координат не будет происходить с целочисленными значениями пикселей).

SnapsToDevicePixels — это всего лишь свойство, управляющее отображением элемента управления, а также то, что края и прямые линии предпочтительно лежат на целых пикселях, а не между ними.Это не имеет никакого отношения к тому, как обрабатываются события мыши (как вы тоже заметили).

Как правило, все в WPF измеряется в double значения, так что либо живите с этим (ваши проверки, скорее всего, в любом случае будут такими же), либо продолжайте округлять до int если вам так нравится :-)

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top