2

Button0から4095の範囲の整数に応じて、色を黒から赤に変更したいというものがあります。

数字が0のときは黒で、この数字が増えると、たとえば4095に達すると、完全に赤になるはずです。

    ChangeColor(int num)
    {
        if(num== 0)
             lightRight.SetBackgroundColor(new Color(0,0,0));
        if(num> 4000)
            lightRight.SetBackgroundColor(new Color(255,0,0));
        //How to make a nice color that scales from 0 to 4095?
    }

この問題にどのように取り組むかについて何か考えはありますか?

4

3 に答える 3

2

それは、中間色のニーズによって異なります。RGB カラーは、#000000 が黒、#FFFFFF が白の 3 つの 16 進数 2 桁の数字として定義されます。

最初の番号は RED、2 番目は GREEN、3 番目は BLUE を表します。したがって、各色の最大数は 255 です。

したがって、最初に希望の赤の色を選択します。これがいいとしましょう。

右: 219 右: 62 右: 0

次に、次のように中間色を計算します。x は [0,4095] に属します。

int r = 219 * (x / 4095f) 
int g = 62 * (x / 4095f) 
int b = 0  * (x / 4095f) 

これらの値を持つと、ボタンの背景に色が適用されます。

lightRight.SetBackgroundColor(new Color(r,g,b));
于 2013-01-04T11:44:09.447 に答える
1

1 ずつインクリメントされた整数値を 16 で割ると、1 ~ 256 の値が得られます。この値を 1 減らし、それを使用してさまざまな RGB コンポーネントを計算します。

コード スニペットの使用:

ChangeColor(int num)
{
    // num being between 0 and 4095, get a value between 0 and 255
    int red = ((num + 1) / 16 ) - 1;
    lightRight.SetBackgroundColor(new Color(red,0,0));
}

丸めと可能な値に対処する必要-1がありますが、要点はわかります...

于 2013-01-04T11:45:05.280 に答える
1
int myInt; //The value that changes from 0 to 4095.
float red = myInt/4095.0;;
float green = 0;
float blue = 0;

Color myColor = new Color(red, green, blue);
于 2013-01-04T11:45:50.763 に答える