1

0 から 50 までの浮動小数点数を取り、均一な強度で緑色を出すメソッドを作成するにはどうすればよいですか?

したがって、入力値が 0 の場合、色は黒になります。

[UIColor colorWithRed:0 green:0 blue:0];

入力値が 50 の場合、色は最大の緑色です。

[UIColor colorWithRed:0 green:255.0/255.0 blue:0];

したがって、入力要素が中間のどこかにある場合、色は中間のどこかにあるはずです。したがって、0 ~ 50 の範囲で、最も暗い緑から最も明るい緑に移動する必要があります。シンプルなはずですが、何が欠けているのかわかりません:

//factor is a float from 0-50
UIColor *greenColor = [UIColor colorWithRed:0 green:factor/255.0 blue:0 alpha:1.0];

このコードは緑色を生成しますが、あまり変動しないため、約 1 階調の緑色しか表示されません。

4

3 に答える 3

3

RGB の最大値 (255) を独自の最大値 (50) に対してスケーリングする必要があります。必要なのは、かなり単純な計算だけです。

colorVal = 255 * x / 50

ここxで、 は 0 から 50 までのスケールでの強度です。

255 * 0  / 50 = 0 
255 * 50 / 50 = 255
255 * 25 / 50 = 128 (rounded up from 127.5)
于 2012-05-01T21:04:05.997 に答える
1

あなたの範囲は からのみ0.0/255.0 -> 50.0/255.0です0.0 to 1.0。そのために試すことができますfactor/50.0

于 2012-05-01T21:05:16.620 に答える
1

一つには、あなたは数学を難しくしすぎています。[UIColor ... green: ...]値の範囲は 0.0 から 1.0 のように見えるため、値の計算は単純に次のようになります。

CGFLoat value = factor / 50.0;
UIColor *greenColor = [UIColor colorWithRed:0 green:(value) blue:0 alpha:1]

これにより、 の場合は 0.0、 の場合はfactor = 01.0の値が得られますfactor = 50

しかし、それを超えて、私は確信が持てません-おそらく、描画が実際にクオンタイズを行ったり、限られたパレットで動作したりするのは何ですか?

于 2012-05-01T21:09:16.063 に答える