我有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?
}
知道如何解决这个问题吗?
答案 0 :(得分:1)
这取决于您对中间色的需求。 RGB颜色定义为3个十六进制两位数字,其中#000000为黑色,#FFFFFFF为白色。
第一个数字是RED,第二个是GREEN,第三个是BLUE。因此每种颜色的最大数量为255。
因此,首先选择所需的RED颜色,假设这个颜色很好:
R:219 G:62 B: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));
答案 1 :(得分:1)
除以16增加1的整数值,您将获得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
值,但你明白了......
答案 2 :(得分: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);