为什么 point() 函数有点透明?

Why is the point() function slightly transparent?

我是运行这个代码:

void draw() {

  if (mousePressed) {
    background(255, 0, 0);
  } else {
    background(0, 255, 0);
  }

  stroke(200, 200, 200);

  for (int x = 0; x < width; x++) {
    for (int y = 0; y < height; y++) {
      point(x, y);
    }
  }
}

我正在绘制红色或绿色背景,然后将颜色设置为灰色(r、g 和 b 均为 200 的颜色),然后遍历 [=36 中的每个像素=] 并在背景上方画一个点,所以我预计只会看到灰色背景。

相反,我看到的是 "slightly green" 或 "slightly red" window。换句话说,我可以通过灰点看到背景颜色。

看起来 point() 函数正在绘制带有透明度的点,但我的描边颜色是 200, 200, 200

如果我将对 point() 的调用更改为 rect(x, y, 1, 1),那么我会看到我期望的纯灰色。

我在 Processing 2.2.1 和 3.1.1 中都看到了这个问题,但在 Processing.js 中没有看到。

我是否遗漏了 point() 函数的某些内容?

呃,我一发布问题就想通了。问题是默认情况下这些点是抗锯齿的,这导致它们稍微透明。

setup() 调用 noSmooth() 函数解决了问题。

void setup(){
  noSmooth();
}

哦。如果有人遇到同样的问题,可以在 the reference 中找到更多信息。