微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

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

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

void draw() {
    int[] nextColor = getNextColor();
    stroke(nextColor[0],nextColor[1],nextColor[2]);
    float[] nextPoint = getNextLocation();
    point(nextPoint[0],nextPoint[1]);
}

但是,如果我将 alpha 透明度值的第四个参数添加stroke(),则画布上根本不会绘制任何内容

float alpha = 0.8;
void draw() {
  int[] nextColor = getNextColor();
  stroke(nextColor[0],nextColor[2],alpha);
  float[] nextPoint = getNextLocation();
  point(nextPoint[0],nextPoint[1]);
}

到目前为止,我已经尝试在参数中直接将 alpha 值设置为 1.0(而不是使用变量),以确保我不会在某处意外将其设置为 0。我还仔细检查了 stroke()documentation,确实有一个与我的参数匹配的覆盖版本。

我做错了什么?

这是我的所有代码,以防其他地方需要考虑。谢谢。

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[2]);
  float[] nextPoint = getNextLocation();
  point(nextPoint[0],nextPoint[1]);
}

解决方法

您误解了 alpha 是什么。

Alpha 表示透明度

Alpha 值的范围为 0 到 255,其中 0 表示完全透明(即 0% 不透明),255 表示完全不透明(即 100% 不透明)。

因此,在您的情况下,当您将 alpha 设置为 0.8 时,您什么也看不到,因为它非常接近透明。如果您不设置 alpha,默认情况下它是 100% 不透明的,因此您可以看到绘图。

如果有兴趣了解更多信息,请查看 here

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。