Windows内置的最小拖拽距离参数是DPI缩放的吗?
Is Windows build-in minimum drag distance parameter DPI-scaled?
我的应用程序中有一个 window,它应该只在鼠标移动一定距离时才被拖动。我希望此距离与 Windows 默认值相同,但无论显示器的 DPI 缩放比例如何,它似乎都是 4。
我是否必须缩放值 4,或者它实际上是 DPI 感知的?
我正在执行以下操作来检查是否应该开始拖动:
private static bool HasMouseMovedFarEnough(MouseEventArgs e)
{
Debug.Assert(_startPoint != null);
Vector delta = _startPoint.Value - e.GetPosition(null);
return Math.Abs(delta.X) > SystemParameters.MinimumHorizontalDragDistance ||
Math.Abs(delta.Y) > SystemParameters.MinimumVerticalDragDistance;
}
如果你在商店里买了一个 1080x1920 的显示器,它总是会告诉你这个尺寸,并且可能有报告缩放尺寸的功能给你,但 Pixel 中的尺寸永远是未缩放的。这就是 Pixel 的定义。
如果你查看源代码
_minimumHorizontalDragDistance =
SystemParameters.ConvertPixel(UnsafeNativeMethods.GetSystemMetrics(SM.CXDRAG))
如果你查看 Win32-API
https://docs.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-getsystemmetrics
The number of pixels on either side of a mouse-down point that the
mouse pointer can move before a drag operation begins. This allows the
user to click and release the mouse button easily without
unintentionally starting a drag operation. If this value is negative,
it is subtracted from the left of the mouse-down point and added to
the right of it.
它说得很清楚,它是像素。
因此,分辨率越高,用户可以调整的越精细。
如果您缩放它,用户将无法使用更高的分辨率。
我的应用程序中有一个 window,它应该只在鼠标移动一定距离时才被拖动。我希望此距离与 Windows 默认值相同,但无论显示器的 DPI 缩放比例如何,它似乎都是 4。 我是否必须缩放值 4,或者它实际上是 DPI 感知的?
我正在执行以下操作来检查是否应该开始拖动:
private static bool HasMouseMovedFarEnough(MouseEventArgs e)
{
Debug.Assert(_startPoint != null);
Vector delta = _startPoint.Value - e.GetPosition(null);
return Math.Abs(delta.X) > SystemParameters.MinimumHorizontalDragDistance ||
Math.Abs(delta.Y) > SystemParameters.MinimumVerticalDragDistance;
}
如果你在商店里买了一个 1080x1920 的显示器,它总是会告诉你这个尺寸,并且可能有报告缩放尺寸的功能给你,但 Pixel 中的尺寸永远是未缩放的。这就是 Pixel 的定义。
如果你查看源代码
_minimumHorizontalDragDistance =
SystemParameters.ConvertPixel(UnsafeNativeMethods.GetSystemMetrics(SM.CXDRAG))
如果你查看 Win32-API
https://docs.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-getsystemmetrics
The number of pixels on either side of a mouse-down point that the mouse pointer can move before a drag operation begins. This allows the user to click and release the mouse button easily without unintentionally starting a drag operation. If this value is negative, it is subtracted from the left of the mouse-down point and added to the right of it.
它说得很清楚,它是像素。 因此,分辨率越高,用户可以调整的越精细。 如果您缩放它,用户将无法使用更高的分辨率。