调用 PointToScreen vs CompositionTarget.TransformToDevice 时的不同

本文关键字:TransformToDevice PointToScreen vs CompositionTarget 调用 | 更新日期: 2023-09-27 18:36:09

我有一个位于主屏幕(也是唯一屏幕)左上角的 WPF 窗口。我想将窗口中的点 (0,0) 转换为屏幕坐标。我相信以下两个调用应该给我相同的结果:

1. 这导致 (8,8)...

window.PointToScreen(new Point(0,0));

2. 这会导致 (0,0)...

PresentationSource.FromVisual(window).CompositionTarget.TransformToDevice.Transform(new Point(0,0));

为什么?

8 像素的差异表明,第一次调用认为窗口坐标系在边框之后启动,而第二次调用将窗口视为一个整体,包括非工作区(调整边框大小和工具栏)。这是真的吗?

(编辑以删除有关DPI设置的多余细节)

调用 PointToScreen vs CompositionTarget.TransformToDevice 时的不同

你知道客户区,对吧?

如果您想找出孩子的位置,将窗口的位置(0,0)放入位置,则第一次调用很有用,它将是客户端区域内的一个点。窗口边框(不与Border混淆)不是客户端区域。

在我看来,第二个调用是窗口本身的坐标(包括边框)。

相关文章:
  • 没有找到相关文章