0

マウスカーソルのX座標をfloat値に変換する次のコードがあります。

    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;

関数を呼び出して、関数のようにパラメーターに値を渡すと、値0.5XToFloat(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 = zy

yを取得する

y = x/z
于 2013-03-08T06:34:52.970 に答える
0

こう言いましょう。今Yとしての幅

Zとして変換された値(0.01234567)

だからあなたがしていることは

z=x/y 

あなたが欲しいのはxで、今回はZがあるので

Z*Y=X
于 2013-03-08T05:43:21.923 に答える
0

これは簡単な計算です:

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

編集:フロート値をパーセンテージと考えてください。範囲は 0 ~ 1 で、0 ~ 100% に相当します。x 座標の float バージョンは、単純に幅のパーセンテージです。

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

したがって、元の座標を取得するには、幅にパーセンテージを掛けます。

于 2013-03-08T05:36:48.470 に答える