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



我在游戏中有一个点想要点击(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 以下。

供参考的图像 (800x600(

供参考的图像 (1437x714(

目标的位置似乎取决于两件事:(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 差异。

最新更新