Как нарисовать графику с различной непрозрачностью из массива? - PullRequest
1 голос
/ 17 февраля 2020

Я пытаюсь нарисовать эти 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);
  } 
}

1 Ответ

1 голос
/ 17 февраля 2020

Есть две проблемы: Ваш код не очищает сцену между кадрами и не очищает объекты PGraphics между кадрами. Поскольку непрозрачность аддитивна, каждый из прямоугольников достигнет полной непрозрачности в течение нескольких кадров, поскольку вы рисуете их друг на друге.

Сначала, чтобы обновить sh фон каждого кадра:

  • Вставьте вызов к background(255); в верхней части draw() l oop.

Затем, чтобы очистить объекты PGraphics, вы можете:

  • Переместите прямоугольный рисунок l oop в setup(), чтобы он выполнялся только один раз.

Или

  • Вставьте вызов pgArray[i].clear(); после pgArray[i].beginDraw();.

Результат:

enter image description here

...