这是我的简单游戏,我需要使背景渐变。蓝色需要在底部变浅,在顶部变深。我需要绿草还留在图片中。我只能说它的顶部是黑色的。有人可以帮我弄这个吗。我正在使用处理
int r = 0;
int g = 0;
int b = 0;
void setup() {
size(640, 480);
changeinbackground();
}
void draw() {
changeinbackground();
drawsun();
noStroke();
strokeWeight(2);
fill(0);
}
void drawsun() {
fill(255, 255, 0);
ellipse(20, 30, 120, 120);
}
void changeinbackground() {
{
fill(0, 255, 0); // colour selected for the grass on the bottom
stroke(20, 255, 0); //green outline
rect(0, 430, 650, 55); // grass on the bottom
}
for(int i = 0; i<400; i +=10 ){
fill(r,g,i);
noStroke();
rect(0,i,640,40);
}
}
答案 0 :(得分:0)
颜色通道的值必须在[0,255]范围内,请参见color()
。
黑色为(0, 0, 0)
,白色为(255, 255, 255)
。
要创建渐变,您必须定义起始颜色和终止颜色,并在这两种颜色之间进行插值。
例如,深蓝色为(0, 0, 127)
,浅蓝色为(195, 195, 255)
。
2颜色可以用lerpColor()
进行插值。 lerpColor
的第三个参数是[0.0,1.0]范围内的浮点值。如果为0.0,则函数返回的是第一个color参数。如果为1.0,则结果为第二种颜色参数。
例如
color c1 = color(0, 0, 127);
color c2 = color(195, 195, 255);
void changeinbackground() {
// [...]
for(int i = 0; i<400; i +=10 ){
float amt = i / 399.0;
fill(lerpColor(c1, c2, amt));
noStroke();
rect(0, i, 640, 40);
}
}