Java 为什么stroke()的alpha参数不会导致绘制任何内容?
当我运行以下代码时,我的草图按预期绘制:Java 为什么stroke()的alpha参数不会导致绘制任何内容?,java,processing,Java,Processing,当我运行以下代码时,我的草图按预期绘制: void draw() { int[] nextColor = getNextColor(); stroke(nextColor[0], nextColor[1], nextColor[2]); float[] nextPoint = getNextLocation(); point(nextPoint[0], nextPoint[1]); } 但是,如果我将alpha transparency值的第四个参数添加到str
void draw() {
int[] nextColor = getNextColor();
stroke(nextColor[0], nextColor[1], nextColor[2]);
float[] nextPoint = getNextLocation();
point(nextPoint[0], nextPoint[1]);
}
但是,如果我将alpha transparency值的第四个参数添加到stroke()
,则不会在画布上绘制任何内容:
float alpha = 0.8;
void draw() {
int[] nextColor = getNextColor();
stroke(nextColor[0], nextColor[1], nextColor[2], alpha);
float[] nextPoint = getNextLocation();
point(nextPoint[0], nextPoint[1]);
}
到目前为止,我已经尝试在参数中直接将alpha值设置为1.0(而不是使用变量),以确保我没有在某个地方意外地将其设置为0。我还仔细检查了stroke(),确实有一个覆盖版本与我的参数匹配
我做错了什么
这是我所有的代码,以防其他地方有什么需要考虑的。多谢各位
import java.util.Random;
Random generator;
int meanX, stdevX, meanY, stdevY;
int meanR, meanG, meanB, stdevR, stdevG, stdevB;
float alpha = 0.8;
// returns two random numbers (for x, y, coordinates)
float[] getNextLocation() {
float[] retArr = new float[2];
retArr[0] = (float) (generator.nextGaussian() * stdevX + meanX);
retArr[1] = (float) (generator.nextGaussian() * stdevY + meanY);
return retArr;
}
int[] getNextColor() {
int[] retArr = new int[3];
retArr[0] = (int) (generator.nextGaussian() * stdevR + meanR);
retArr[1] = (int) (generator.nextGaussian() * stdevG + meanG);
retArr[2] = (int) (generator.nextGaussian() * stdevB + meanB);
return retArr;
}
void setup() {
background(255);
size(500, 500);
generator = new Random();
strokeWeight(10);
// play around with these
meanX = width/6;
stdevX = width/8;
meanY = height/2;
stdevY = height/30;
meanR = 224;
stdevR = 20;
meanG = 169;
stdevG = 60;
meanB = 20;
stdevB = 5;
}
void draw() {
int[] nextColor = getNextColor();
stroke(nextColor[0], nextColor[1], nextColor[2]);
float[] nextPoint = getNextLocation();
point(nextPoint[0], nextPoint[1]);
}
你误解了什么是阿尔法 Alpha表示透明度 Alpha值的范围为0到255,其中0为完全透明(即0%不透明),255为完全不透明(即100%不透明) 因此,在您的例子中,当您将alpha设置为
0.8
时,您什么也看不到,因为它非常接近透明。如果不设置alpha
,默认情况下,它是100%不透明的,因此可以看到图形
如果有兴趣了解更多,请看一看。他没有误解这是什么;相反,他认为处理的alpha范围(通常是)是0…1,而不是0…255。