我的应用程序中有一个窗口,仅当鼠标移动一定距离时才应拖动该窗口。我希望该距离与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;
}
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
在WPF或类似UI框架中,SystemParameters.MinimumHorizontalDragDistance
和 SystemParameters.MinimumVerticalDragDistance
是DPI感知的。这意味着这些值会根据系统的DPI设置自动调整,以保持与系统默认拖动阈值一致的用户体验,无论显示器的缩放比例如何。
因此,你不需要手动缩放这个值4。直接使用这两个属性进行比较即可确保你的应用在不同DPI设置下表现一致,与Windows默认的拖动开始距离相匹配。你的代码片段已经是正确做法,它能够适应不同的DPI缩放场景,无需额外修改来处理DPI相关缩放问题。