java - 为什么 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[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 表示透明度。
Alpha 值的范围从 0 到 255,其中 0 表示完全透明(即 0% 不透明),255 表示完全不透明(即 100% 不透明)。
因此,在您的情况下,当您将 alpha 设置为 时0.8
,您什么也看不到,因为它非常接近透明。当您不设置 时alpha
,默认情况下它是 100% 不透明的,因此您可以看到绘图。
如果有兴趣了解更多信息,请查看此处。
推荐阅读
- docker - 如何使用容器入口点参数调用 gcloud 计算实例 create-with-container
- recursion - 从 javascript 对象创建树结构
- python - 无法在 PyCharm 中安装 Pandas
- excel - 使用从值范围派生的数据集绘制 xy 图表
- delphi - 尝试在控制台应用程序中使用 JclShell 创建 ShellLink 快捷方式失败
- c - 将十进制转换为二进制而不使用数组
- javascript - 文本到语音 api 上的错误:ReferenceError:未定义语音合成
- javascript - 小写第一个字母
- python - VS Code python 的烦恼
- javascript - Google Ad Manager 尺寸映射浏览器警告