我已经四处寻找广泛尝试在Python中找到一种在一种颜色与另一种颜色之间淡入淡出的方法。我发现的大多数例子通常都是针对某个设备或其他不能很好翻译的语言。
我目前有一段经修改的代码,用于创建一个呼吸效果,例如从0到255的效果非常好。我现在拥有from
颜色,说绿色;闪烁;然后设置to
颜色:
def colorFade(strip, colorFrom, colorTo, wait_ms=20, steps=10):
steps = 200
step_R = int(colorTo[0]) / steps
step_G = int(colorTo[1]) / steps
step_B = int(colorTo[2]) / steps
r = int(colorFrom[0])
g = int(colorFrom[1])
b = int(colorFrom[2])
for x in range(steps):
c = Color(int(r), int(g), int(b))
for i in range(strip.numPixels()):
strip.setPixelColor(i, c)
strip.show()
time.sleep(wait_ms / 1000.0)
r += step_R
g += step_G
b += step_B
致电代码:
colorFade(strip, [200, 0, 0], [0, 200, 0])
答案 0 :(得分:3)
听起来你想从colorFrom
开始,然后逐渐迈步
直线到达colorTo
。
此代码的作用是从colorFrom
开始,然后增加当前值
颜色就好像是从黑色走到colorTo
。
如果没有完整的代码,很难确定,但看起来应该是这样 替换这个:
step_R = int(colorTo[0]) / steps
step_G = int(colorTo[1]) / steps
step_B = int(colorTo[2]) / steps
用这个:
step_R = (colorTo[0] - colorFrom[0]) / steps
step_G = (colorTo[1] - colorFrom[1]) / steps
step_B = (colorTo[2] - colorFrom[2]) / steps
编辑:而且,正如jasonharper指出的那样,你可能正在进行整数除法。不清楚你的类型是什么。如果您使用的是Python 2,/
是整数除法。在Python 3中,它是浮点数。