Windows内置的最小拖动距离参数DPI可缩放吗?

我的应用程序中有一个窗口,仅在鼠标移动一定距离时才应拖动该窗口。我希望该距离与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;
    }
zjqgd 回答:Windows内置的最小拖动距离参数DPI可缩放吗?

如果您在商店购买1080x1920显示器,它将始终告诉您该尺寸,并且可能会有一些功能向您报告缩放后的尺寸,但是Pixel中的尺寸将始终未缩放。那就是像素的定义。

如果您查看源代码

 _minimumHorizontalDragDistance = 
  SystemParameters.ConvertPixel(UnsafeNativeMethods.GetSystemMetrics(SM.CXDRAG))

如果您查看Win32-API

https://docs.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-getsystemmetrics

  

鼠标向下的点两侧像素的数量   鼠标指针可以在拖动操作开始之前移动。这允许   用户无需单击即可轻松单击并释放鼠标按钮   意外启动拖动操作。如果该值为负,   从鼠标向下的点的左侧减去它,然后将其添加到   它的权利。

它说得很清楚,以像素为单位。 因此,分辨率越高,用户可以调整的越精细。 如果进行缩放,则用户将不会使用更高的分辨率。

本文链接:https://www.f2er.com/2950748.html

大家都在问