转换决议,具体取决于用户正在运行的分辨率



im制作一个程序,该程序使使用快速输入的游戏更容易。由于我现在的工具仅适用于1920x1080,因此我想将其用于多种决议。那就是我现在在1920x1080中拥有它的方式。

              SetCursorPos(105, 640);
              System.Threading.Thread.Sleep(30);
              sim.Mouse.LeftButtonClick();
              System.Threading.Thread.Sleep(30);
              SetCursorPos(274, 547);
              System.Threading.Thread.Sleep(30);
              sim.Mouse.LeftButtonClick();
              System.Threading.Thread.Sleep(1560);
              sim.Keyboard.KeyPress(VirtualKeyCode.VK_T);
              System.Threading.Thread.Sleep(50);
              SetCursorPos(274, 547);
              sim.Mouse.LeftButtonClick();
              System.Threading.Thread.Sleep(1610);
              SetCursorPos(274, 547);
              sim.Mouse.LeftButtonClick();
              System.Threading.Thread.Sleep(1610);
              SetCursorPos(274, 547);
              sim.Mouse.LeftButtonClick();
              SetCursorPos(960, 540);

我有点希望该程序检测实际的屏幕分辨率,并将像素位置从1920x1080转换为所需的位置。

理论上...存储您的(x,y(坐标为十进制数字,代表您开发它们的原始分辨率的"百分比"。

例如,您的第一点是(105,640(。作为"百分比",将X坐标划分为1920,将Y坐标除以1080,以获取(0.0546875,0.5925925925925926(。这可以使用PointF结构存储。

现在,您可以使用那些小数百分比数字来通过简单地将它们乘以屏幕的宽度/高度来获取任何分辨率的同等点。

您可以使用屏幕来获取当前的屏幕分辨率。包装:

Rectangle rc = Screen.PrimaryScreen.Bounds;

您需要的是Scaling

您已编码1920x1080的固定结果。IE。1920像素宽度和1080像素高度。

如果您需要扩展此内容,则可以获取当前的屏幕结果,然后计算比率。

假设分辨率为640x480。然后,您将使用:

计算X(或宽度(比率

640 / 1920 = 0.3333...

Y(或高度(的比率:

480 / 1080 = 0.4444...

现在按比例缩放宽度和高度:

SetCursorPos(105 * 0.3333, 640 * 0.4444)

在代码中看起来像:

int currentX = SystemParameters.PrimaryScreenHeight;
int currentY = SystemParameters.PrimaryScreenWidth;
var xScale = currentX / 1920;
var yScale = currenty / 1080;
SetCursorPos(105 * xScale, 640 * yScale);

最新更新