2013-07-04 30 views
0

我正在嘗試更改各個點的Alpha值。我使用stroke()方法設置了一個alpha值,並嘗試了其他方法,例如使用fill()設置它,儘管這並不適用於點,但我仍然無法更改alpha值。無法將Alpha應用於Processing.org草圖

重現步驟: 下面是一個簡短的代碼示例。兩條紅線。一個具有默認的alpha(255),一個具有alpha = 100。我有一條藍色的線,用alpha = 100來穿過它們。

void setup() 
{ 
    size(500, 500); 
    background(255); 
    colorMode(RGB); 
    smooth(); 
} 

void draw() { 

    int x = 250; 
    int y = 250; 
    int alphaval = 100; 
    strokeWeight(5); 

    for (int del = 0; del < 100; del = del+1) { 
    stroke(255, 0, 0); 
    point(x-20-del/2, y-del/2); 
    } 
    for (int del = 0; del < 100; del = del+1) { 
    stroke(255, 0, 0, alphaval); 
    point(x-del/2, y-del/2); 
    } 
    for (int del = 0; del < 100; del = del+1) { 
    stroke(0, 0, 255, alphaval); 
    point(x-60+del/2, y-del/2); 
    } 
} 

回答

1

啊哈!我從某人那裏發現,我已經忘記在我的draw()方法的開始處放置背景(255),所以我一遍又一遍地重複繪製點,從而消除了alpha的任何效果。這表明阿爾法工作:

void setup() 
{ 
    size(500, 500); 
    background(255); 
    colorMode(RGB); 
    smooth(); 
} 

void draw() { 

    background(255); 
    int x = 250; 
    int y = 250; 
    int alphaval = 10; 
    strokeWeight(20); 

    for (int del = 0; del < 100; del = del+1) { 
    stroke(255, 0, 0); 
    point(x-30-del/2, y-del/2); 
    } 
    for (int del = 0; del < 100; del = del+1) { 
    stroke(255, 0, 0, alphaval); 
    point(x-del/2, y-del/2); 
    } 
    for (int del = 0; del < 100; del = del+1) { 
    stroke(0, 0, 255, alphaval); 
    point(x-60+del/2, y-del/2); 
    } 
} 
相關問題