算法:如何使用RGB值从红色通过黄色渐变为绿色?
|
我想基于0到100的值显示颜色。一端(100)是纯红色,另一端(0)是纯绿色。在中间(50),我希望它是黄色的。
我希望颜色逐渐从一种逐渐淡入另一种,以便在75时,颜色是一半红色和一半黄色,等等。
如何编程RGB值以反映这种褪色?谢谢。
没有找到相关结果
已邀请:
15 个回复
倪蕊悲潍
鲁釜头
说明: 让我们关注颜色分量的[0.0-1.0]范围,而不是[0-255]范围: 绿色= 0.0、1.0、0.0 黄色= 1.0、1.0、0.0 红色= 1.0、0.0、0.0 如果仅将绿色分量从0.0(在一端)缩放到1.0(在另一端),然后对红色分量做同样的事情(但是向后移动),则会得到难看且不均匀的颜色分布。 为了使外观更好看,我们可以编写很多代码,或者可以更聪明。 如果仔细看一下单个成分,您会发现我们可以将范围分成两个相等的部分:在第一个部分中,我们将红色成分从0.0增加到1.0,将绿色保留为1.0,将蓝色保留为0.0;在第二个步骤中,我们减少绿色分量,而其余两个保持不变。通过最大化我们的值以简化代码,我们可以利用以下事实:高于1.0的任何值都将被读取为1.0。假设您的x值从0.00(0%)变为1.00(100%),则可以将其乘以2,使其超过颜色分量的1.0限制。现在您的组件从0.0变为2.0(红色),从2.0变为0.0(绿色)。让它们修剪到[0.0-1.0]范围,然后就可以了。 如果您的x在另一个范围内移动(例如[0-100]),则需要选择一个合适的系数,而不是2
悸翠疮武昏
部窖空
表示note3ѭ,范围从
到
。这样的事情应该起作用:
这个想法是从红色开始:
。然后增加绿色以获得黄色::8ѭ。然后减少红色以获得绿色::9ѭ。 编辑:这是C#中的代码
拈吉勉犬姆
用法;
凡夕
博沮富教全
如果0(或NULL)或当min = max时没有背景(即Color.White)。 对于所有正值,您将获得在RGB(240,255,240)和RGB(0,155,0)之间均匀分布的绿色。 对于所有负值,您将获得在RGB(255,240,240)和RGB(230,0,0)之间均匀分布的红色。
师埠女
梦话快家腹
款去芳尾脊
玩翁文醚碱
冲汉
这是扩展名:
粱委教
埠仙俊
甲车劲
用于显示此功能的示例代码在C ++中 此解决方案的灵感来自@jterrace答案。