我正在编写一个程序,该程序使具有快速输入的游戏变得更容易。由于我的工具目前仅适用于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转换为所需的位置。
答案 0 :(得分:0)
理论上...将您的(x,y)坐标存储为十进制数字,代表您开发它们的原始分辨率的“百分比”。
例如,您的第一点是(105,640)。作为“百分比点”,将x坐标除以1920,将y坐标除以1080,得到(0.0546875,0.5925925925925926)。可以使用PointF结构进行存储。
现在,您可以使用这些十进制百分比数字,只需将它们乘以屏幕的宽度/高度即可在任何分辨率下获得所需的等效点。
您可以使用Screen.Bounds获取当前的屏幕分辨率:
Rectangle rc = Screen.PrimaryScreen.Bounds;
答案 1 :(得分:0)
您需要的是Scaling
。
您已为1920x1080
的固定结果编码。即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);