MouseEventArgs.GetPosition()
我通过调用我的边界控制获得浮点值,例如 (471, 326.723333333333) 。虽然我总是可以手动对数字进行四舍五入,但我想知道是否有某种设置可以获取整数。
我认为SnapsToDevicePixels
在我的边境控制上设置为 True 会有所帮助,但它没有,因为它可能无关。
有任何想法吗?
谢谢!
MouseEventArgs.GetPosition()
我通过调用我的边界控制获得浮点值,例如 (471, 326.723333333333) 。虽然我总是可以手动对数字进行四舍五入,但我想知道是否有某种设置可以获取整数。
我认为SnapsToDevicePixels
在我的边境控制上设置为 True 会有所帮助,但它没有,因为它可能无关。
有任何想法吗?
谢谢!
在 WPF 中,您将始终以浮点值返回定位。如果要对其进行舍入,则需要手动执行此操作。
这是由于分辨率独立性,并且是设计使然。
由于 WPF 是独立于设备的,并且并非所有设备都共享相同的像素大小,因此通过带有小数坐标的 MouseEvents 是有意义的(您也可以将控件放在 3D 空间中,其中整个坐标系转换不会发生在整数像素值的情况下)。
SnapsToDevicePixels 只是一个属性,它控制控件的显示方式,并且边缘和直线最好位于完整的像素上,而不是介于两者之间。它与鼠标事件的处理方式无关(您也注意到了)。
作为一般的经验法则,WPF 中的所有内容都以double
值来衡量,所以要么接受它(你的检查可能无论如何都是一样的),或者int
如果你愿意的话继续四舍五入:-)
从鼠标定位是连续的。显示器上的定位是离散的。你得到的坐标值比你需要的要好,四舍五入总是会给你最接近的像素。基本上,圆它,不用担心它。