Windows内置最小拖动距离参数是否为DPI缩放?

问题描述 投票:0回答:1

我的应用程序中有一个窗口,仅当鼠标移动一定距离时才应拖动该窗口。我希望该距离与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;
    }
c# windows scaling dpi
1个回答
0
投票

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

如果您查看源代码

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

并且如果您查看Win32-API

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.