1

我正在尝试用数组绘制这 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);
  } 
}
4

1 回答 1

1

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

首先,每帧刷新背景:

  • 在循环background(255);顶部插入一个调用。draw()

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

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

或者

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

结果:

在此处输入图像描述

于 2020-02-17T12:08:36.490 回答