0

我有这段代码将鼠标光标的Xfloat坐标转换为一个值:

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

结果是这样的0.01234567现在我如何将其转换回原始坐标?任何人都可以帮忙吗?

4

3 回答 3

2

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

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

要将其转换回原始值,我们创建了一个函数,我们将浮点值乘以宽度。

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 = x/z
于 2013-03-08T06:34:52.970 回答
0

这是简单的数学:

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

编辑:将浮点值视为百分比。它的范围从 0 到 1,相当于 0-100%。x 坐标的浮点版本只是宽度的百分比:

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

因此,要获取原始坐标,您将宽度乘以百分比。

于 2013-03-08T05:36:48.470 回答
0

让我们说 this.Width 现在为 Y

转换后的值(0.01234567)为 Z

所以你正在做的是

z=x/y 

你想要的是x,这次你有Z

Z*Y=X
于 2013-03-08T05:43:21.923 回答