当高度影响X坐标时,如何重新计算窗口内点的坐标?

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

我想要点击一个游戏中的一个点(x:360,y:101,分辨率为800x600),改变窗口的宽度不会影响这个点的坐标,但是,改变高度确实如此。高度越大,该点的X坐标向右移动的越多。 Y坐标也会改变,但速度较慢,不足以让我错过点击,但帮助计算它也会有所帮助。

代码是无关紧要的,但在这里

WinGetPos, ,,width,height,A
newX := ???            // Need help here
newY := height * 0.168 // Bad, but works
MouseMove, newX, newY
Click

一些额外的信息,是游戏的流亡之路。它允许您使宽度尽可能大,这使您可以看得更远。在保持相同宽度的同时降低高度也可以让你看得更远,但它不会让你降低到600以下。

Image for reference (800x600)

Image for reference (1437x714)

math autohotkey aspect-ratio
1个回答
0
投票

目标的位置似乎取决于两件事:(1)窗口的边框和(2)垂直分辨率。如果我们只关注客户区(即不包括其边框和标题栏的窗口)并将坐标系的原点放在此区域的左上角,则要以800x600分辨率点击的位置为(356, 78)。我们可以通过实际分辨率的高度比直接缩放这一点,最后添加边框和标题栏。因此,最终的公式将是:

newX = borderLeft + 356 * verticalResolution / 600
newY = borderTop + titleBarHeight + 78 * verticalResolution / 600

有趣的是,两个屏幕截图中的边框不同。 800x600镜头的左边框为4px,而另一个镜头的边框为1px。我假设这是由于截图并假设左边框为4px。顶部边框和标题栏高度始终为23px。

因此,你有:

newX = 4 + 356 * verticalResolution / 600
newY = 23 + 78 * verticalResolution / 600

它提供了1437x714截图中的位置(428, 116),看起来是正确的,除了左边框的3px差异。

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