【问题标题】:Creating a Rainbow filled window in Processing在处理中创建一个彩虹填充窗口
【发布时间】:2021-04-11 14:02:41
【问题描述】:

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

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

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);
  }
}
}

对代码的任何帮助、建议和调整将不胜感激。提前致谢。

【问题讨论】:

    标签: java colors processing gradient


    【解决方案1】:

    您将从一些伪代码中受益。永远不要低估伪代码的力量。

    在这张图片中,您需要做的所有事情都被简单地写成了一天:

    由于我们使用 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] 范围内,但您的图像也是 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
    

    这会给你这个结果:

    玩得开心!

    【讨论】:

    • 谢谢!这才是我真正需要的!
    猜你喜欢
    • 1970-01-01
    • 2016-09-14
    • 1970-01-01
    • 1970-01-01
    • 2014-05-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-11
    相关资源
    最近更新 更多