Я новичок в обработке, и я застрял на этом:
Цель: я хочу создать массив прозрачных изображений, отображаемых по одному после каждого mousePressed ().
Проблема: то, что происходит, происходит из-за того, что на всех изображениях присутствует альфа-прозрачность, они перекрываются и возникает кумулятивный эффект. В идеале я хочу очистить его, а затем показать другое изображение.
PGraphics pg;
PImage[]
myImageArray = new PImage[12];
void setup() {
//background (255,0);
size(1024, 1024,P2D);
for (int i=0; i<myImageArray.length; i++) {
myImageArray[i] = loadImage( "A-0" + i + ".png");
pg = createGraphics (1000,1000);
}
}
void draw() {
pg.beginDraw ();
pg.image(myImageArray[(int)random(12)], 0, 0, 1000, 1000);
pg.endDraw ();
image(pg,0,0);
noLoop ();
}
void mousePressed() {
pg = createGraphics(1000,1000);
if (frameCount > 1) {
pg.beginDraw ();
pg.clear();
pg.endDraw ();
loop ();
}
}
Любой совет будет очень признателен!
Похоже, вы просто ищете функцию background()
. Функция background()
очищает старые кадры, рисуя сплошным цветом в качестве фона.
Вы можете найти больше информации в ссылка.
@K___S Само окно не прозрачное? Вызовите функцию background()
внутри функции draw()
, чтобы перерисовать фон окна и удалить старые кадры.
Привет, Кевин, большое спасибо! Мое замешательство возникло из-за того, что я подумал, что вызову background (); в draw () он сохранится вместе с фоном, но этого не произошло.
@K___S Что вы имеете в виду, говоря о сохранении с фоном?
Я подумал, что если я вызову background (255);
в draw();
и вызову pg.save ();
, он сохранит .png с указанным цветом фона. Имеет ли это смысл?
@K___S Ох, понятно. В этом есть смысл, но этого не произойдет. Пока вы звоните в pg.save()
, будет сохранено только то, что вы нарисовали на pg
. Если вы хотите сохранить то, что показано на экране, вы можете вызвать save()
или saveFrame()
без переменной pg
.
@K__S, пожалуйста, не забудьте поставить зеленую отметку, если Кевин Уоркман ответил на ваш вопрос.
Привет, спасибо за ответ! Как вы сказали, функция background () заполняет его сплошным цветом, которого я стараюсь избегать, чтобы сохранить альфа-прозрачность. Вот почему я использую PGraphics, а не просто PImage.