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];

此代码生成绿色,但波动不大,因此您只能看到大约一种绿色。

4

3 回答 3

3

您需要根据自己的最大值 (50) 缩放 RGB 最大值 (255)。你所需要的只是相当简单的数学:

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 whenfactor = 0和 1.0 when的值factor = 50

不过,除此之外,我不确定——也许这幅画实际上做了一些量化或使用有限的调色板?

于 2012-05-01T21:09:16.063 回答