正在转换鼠标点

本文关键字:鼠标 转换 | 更新日期: 2023-09-27 18:21:39

我有两个图像,图像A=800x600大小,另一个图像B=1440x900。例如,如果我在50x50坐标下单击图像A,我如何将其转换为具有正确位置的图像B的值?

正在转换鼠标点

newX = x * 1440 / 800;
newY = y * 900 / 600;

首先计算差值比率(newX/oldX),然后相乘。简而言之,您的实际示例:

int newX = (50*1440)/800;
int newX = (50*900)/600);

请注意,出于实际原因,我已将计算切换为先显式相乘,否则您将不得不强制转换为介于两者之间的浮点值,以避免意外的舍入。

此代码将整数坐标视为像素的中心,它也适用于边缘。

x2 = round((x + 0.5) * 1440.0 / 800.0);
y2 = round((y + 0.5) * 900.0 / 600.0);

编辑:这假设(0,0)是你的角,而不是(1,1)。通常情况就是这样。