转换光标坐标

本文关键字:坐标 光标 转换 | 更新日期: 2023-09-27 18:02:59

我有这段代码,它将鼠标光标的X坐标转换为float值:

    private float XToFloat(int x)
    {
        return (float)(x / (float)this.Width);
    }

的结果是这样的0.01234567现在我怎么能把它转换回原来的坐标?有人能帮忙吗?

转换光标坐标

这只是一个简单的数学。使用代码。

private float XToFloat(int x)
{
   return (float)(x / (float)this.Width);
}

的例子:

//If Width Value
this.Width = 10;

调用函数并传递一个值给参数,如XToFloat(5);该函数将返回值0.5

//inside the function
    (float)(x / (float)this.Width); => (float)(5 / (float)10);
//z = x/y

为了将其转换回原始值,我们创建了一个函数,将float值乘以Width。

private int FloatToX(float f){
        return (int)((float)this.Width*f);
    }
例如FloatToX(0.5) 0.5x10将返回一个整数值5
//inside the function
    (int)((float)this.Width*f) => (int)((float)10*0.5)
//x = zy
数学中的

就是

得到z

z = x/y

获取x

x = zy

得到y

y = x/z

这是一个简单的数学:

float floatValue = (float)(x / (float)this.Width);
int cursorX = floatValue * this.Width;

编辑:将浮点值视为百分比。取值范围为0 ~ 1,相当于0 ~ 100%。那么,x坐标的float版本就是宽度的百分比:

0%   width   100%
+-------------+
|             |
|        80%  |
|         X   |
|             |
+-------------+

所以要得到原来的坐标你要用宽度乘以百分比

让我们这么说。现在宽度为Y

转换值(0.01234567)为Z

所以你要做的是

z=x/y 

你想要的是x而这次你有Z所以

Z*Y=X