这个是学校作业用的。我是处理软件的新手,我想创建一个彩虹填充的窗口,就像下面的图片(在中心)一样。

左边的程序就是我现在的程序。中间的程序就是我想要的样子。右边是我正在使用的代码。我会把它复制-粘贴到这里。
void setup() {
size(255, 255);
}
void draw() {
noStroke();
colorMode(RGB, 255,255,255);
for (int i = 0; i <255; i++) {
for (int j = 0; j < 255; j++) {
stroke(j,i,128);
point(i, j);
}
}
}任何帮助,建议,代码的调整将非常感谢。提前谢谢。
发布于 2021-04-12 10:02:40
你可以从一些伪代码中获益。永远不要低估伪代码的威力。
在这张图中,你需要做的一切都写得很清楚:

由于我们使用的是RGB,并且图像告诉您如何处理红色、绿色和蓝色,因此您已经是金色的了,但为了使代码更透明,我们将稍微修改代码。让我们暂时忘掉循环。下面是图片告诉你要做的事情:
R -> vertical slider, the closer to the bottom the more red you have
G -> horizontal slider, left is less and right is more
B -> vertical slider, the opposite to the red slider现在,知道您的值在0-255范围内,dans您的图像也是256像素宽的正方形,您只需使用循环的索引来获得RGB值:
for (int i = 0; i <255; i++) {
for (int j = 0; j < 255; j++) {
int r = j; // up == more red
int g = i; // right == more green
int b = 255 - j; // down == less blue
stroke(color(r, g, b));
point(i, j);
}
}另外,为了方便起见,因为这是一个静态图像而不是动画,您可以将此代码放入setup()方法中,它将得到相同的结果:
void setup() {
size(255, 255);
for (int i = 0; i <255; i++) {
for (int j = 0; j < 255; j++) {
int r = j; // up == more red
int g = i; // right == more green
int b = 255 - j; // down == less blue
stroke(color(r, g, b));
point(i, j);
}
}
}
void draw() {} // you still need this method even if it's empty这将给出以下结果:

玩得开心!
https://stackoverflow.com/questions/67045889
复制相似问题