2016-08-03 12 views
1

私はこのコードを実行している:なぜpoint()関数がわずかに透明ですか?

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

Iが赤色または緑色の背景を描画だが、その後、私はグレーに色(R、G、Bのカラー、およびBを設定してい200)、ウィンドウ内のすべてのピクセルをループし、背景の上にポイントを描くので、灰色の背景のみが表示されることが予想されます。

代わりに、私が見ているのは「やや緑色」または「やや赤い」ウィンドウです。言い換えれば、私は灰色の点を介して背景色を見ることができます。

green and red showing through

point()機能は透明性の点を描いているが、私のストロークの色が200, 200, 200あるように見えます。

point()に電話を変更してrect(x, y, 1, 1)に変更すると、予想通りの灰色の灰色が表示されます。

Processing 2.2.1と3.1.1の両方でこの問題が発生しますが、Processing.jsではこの問題はありません。

point()機能で何か不足していますか?

答えて

1

私は質問を投稿するとすぐにこれを理解しました。問題は、デフォルトではポイントがアンチエイリアス処理され、その結果、それらがわずかに透明になることです。

noSmooth()関数をsetup()から呼び出すと、問題が解決されます。

void setup(){ 
    noSmooth(); 
} 

D'oh。誰かが同じ問題を抱えている場合、さらに詳しい情報はthe referenceにあります。

関連する問題