为什么stroke()的alpha参数导致不绘制任何内容?

cetgtptt  于 2021-06-26  发布在  Java
关注(0)|答案(1)|浏览(335)

当我运行以下代码时,我的草图按预期绘制:

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]);
}
rkttyhzu

rkttyhzu1#

你误解了什么 alpha 是。
阿尔法意味着透明。
alpha值的范围从0到255,其中0表示完全透明(即0%不透明),255表示完全不透明(即100%不透明)。
所以在你的情况下,当你把alpha设为 0.8 ,你看不到任何东西,因为它非常接近透明。当您不设置 alpha ,默认情况下为100%不透明,因此可以看到图形。
如果有兴趣了解更多,请看这里。

相关问题