2

我有一个Button我想根据从 0 到 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 颜色定义为 3 位十六进制两位数,其中 #000000 为黑色,#FFFFFF 为白色。

第一个数字是指红色,第二个是绿色,第三个是蓝色。所以每种颜色的最大数量是 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 回答