0

我正在尝试更改各个点的 alpha 值。我使用 stroke() 方法设置了一个 alpha 值,并且我尝试了其他方法,例如使用 fill() 设置它,即使这并不真正适用于点,但我仍然无法更改 alpha 值。

重现步骤:这是一个简短的代码示例。两条红线。一个具有默认 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);
  }
}
4

1 回答 1

1

啊哈!我从某人那里发现我忘记在我的 draw() 方法的开头放置 background(255) 所以我一遍又一遍地绘制点,这抵消了 alpha 的任何影响。这显示了 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);
  }
}
于 2013-07-05T15:31:36.770 回答