为什么 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 中找到更多信息。
我是运行这个代码:
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 中找到更多信息。