假设我们有以下代码:
void setup() {
background(0);
size(200, 200);
fill(255);
rect(75, 75, 50, 50);
}
void draw() {
fill(0, 2);
rect(0, 0, width, height);
}
Run Code Online (Sandbox Code Playgroud)
即使在"永远等待"之后,白色50x50矩形仍然可见,尽管已经褪色.为什么不fill(0, 2)最终掩盖这个?
我想这个问题是双重的:
这是一篇解释发生了什么的帖子:http://processing.org/discourse/beta/num_1138703939.html
基本上,问题在于处理将颜色存储为整数,但采用浮点参数。组合颜色时,处理将浮点数舍入为整数。在您的情况下,您的颜色卡在值 63, 63, 63 处,因为此时混合太轻微,无法产生舍入后可检测到的差异。
解决方案是从源开始淡入淡出,而不是在顶部覆盖 alpha 颜色。