首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在处理中创建彩虹填充窗口

在处理中创建彩虹填充窗口
EN

Stack Overflow用户
提问于 2021-04-11 22:02:42
回答 1查看 67关注 0票数 0

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

左边的程序就是我现在的程序。中间的程序就是我想要的样子。右边是我正在使用的代码。我会把它复制-粘贴到这里。

代码语言:javascript
复制
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);
  }
}
}

任何帮助,建议,代码的调整将非常感谢。提前谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-04-12 10:02:40

你可以从一些伪代码中获益。永远不要低估伪代码的威力。

在这张图中,你需要做的一切都写得很清楚:

由于我们使用的是RGB,并且图像告诉您如何处理红色、绿色和蓝色,因此您已经是金色的了,但为了使代码更透明,我们将稍微修改代码。让我们暂时忘掉循环。下面是图片告诉你要做的事情:

代码语言:javascript
复制
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值:

代码语言:javascript
复制
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()方法中,它将得到相同的结果:

代码语言:javascript
复制
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

这将给出以下结果:

玩得开心!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67045889

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档