如何从数组中绘制具有不同不透明度的图形?
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);
}
}
有两个问题:您的代码没有清除帧之间的阶段,也没有清除帧之间的 PGraphics 对象。由于不透明度是相加的,因此每个矩形都会在几帧内达到完全不透明,因为您将它们绘制在彼此之上。
首先,每帧刷新背景:
- 在
draw()
循环的顶部插入对 background(255);
的调用。
然后,要清除 PGraphics 对象,您可以:
- 将您的矩形绘图循环移动到
setup()
,因此它只运行一次。
或
- 在
pgArray[i].beginDraw();
之后插入对 pgArray[i].clear();
的调用。
结果:
我正在尝试用数组绘制这 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);
}
}
有两个问题:您的代码没有清除帧之间的阶段,也没有清除帧之间的 PGraphics 对象。由于不透明度是相加的,因此每个矩形都会在几帧内达到完全不透明,因为您将它们绘制在彼此之上。
首先,每帧刷新背景:
- 在
draw()
循环的顶部插入对background(255);
的调用。
然后,要清除 PGraphics 对象,您可以:
- 将您的矩形绘图循环移动到
setup()
,因此它只运行一次。
或
- 在
pgArray[i].beginDraw();
之后插入对pgArray[i].clear();
的调用。
结果: