如何从数组中绘制具有不同不透明度的图形?

How to draw pgraphics with different opacity out of an array?

我正在尝试用数组绘制这 5 个矩形,但它们具有相同的不透明度... 但他们应该有不同但我现在不知道为什么? 有人可以帮助我吗? 先感谢您 :) 塞巴斯蒂安

PGraphics[] pgArray = new PGraphics[5];

void setup() {
  size(500, 500);
  background(255);

  for (int i = 0; i<pgArray.length; i++) {
    pgArray[i] = createGraphics(500, 500);
  }
}

void draw() {

  for (int i = 0; i < pgArray.length; i++) {
    pgArray[i].beginDraw();
    pgArray[i].fill(0, (255/pgArray.length)*i+1);
    pgArray[i].rect(20*i, 20*i, 50, 50);
    pgArray[i].endDraw();
  }

  for(int i = 0; i < pgArray.length; i++){
    image(pgArray[i],0,0);
  } 
}

有两个问题:您的代码没有清除帧之间的阶段,也没有清除帧之间的 PG​​raphics 对象。由于不透明度是相加的,因此每个矩形都会在几帧内达到完全不透明,因为您将它们绘制在彼此之上。

首先,每帧刷新背景:

  • draw() 循环的顶部插入对 background(255); 的调用。

然后,要清除 PGraphics 对象,您可以:

  • 将您的矩形绘图循环移动到 setup(),因此它只运行一次。

  • pgArray[i].beginDraw(); 之后插入对 pgArray[i].clear(); 的调用。

结果: