为了账号安全,请及时绑定邮箱和手机立即绑定

在 HSB 颜色模式中更改不透明度

在 HSB 颜色模式中更改不透明度

绝地无双 2022-01-12 17:12:24
我正在尝试更改笔画的不透明度,但不确定如何在 HSB 颜色模式下进行。或者,如果我切换到 RGB 模式,如何让颜色随时间变化?这是我的代码:(任何帮助将不胜感激)float rainbow=0;int dir=1;void setup() {  size(600, 600);  background(0);  colorMode(HSB, 255); } void draw() {  if ( rainbow < 255 && dir==1) {     rainbow++;  }  if ( rainbow > 0 && dir==-1) {    rainbow--;  }  if ( rainbow == 255) {    dir*= -1;  }  if ( rainbow == 0) {    dir*= -1;  }  stroke(rainbow, 255, 200);  line(mouseX,mouseY,width/2,height/2);   if (mousePressed){  stroke(rainbow, 255, 200);  line(mouseX,mouseY,0,mouseX);  }  if (mousePressed){  stroke(rainbow, 100, 200);  line(mouseX,mouseY,600,mouseX);  }}
查看完整描述

1 回答

?
慕的地10843

TA贡献1785条经验 获得超8个赞

您可以给stroke()orfill()函数指定不透明度的第四个参数。这是一个例子:


void setup(){

  size(500, 500);

  colorMode(HSB, 255);

  background(255);

}


void draw(){

  fill(0, 255, 200, 100);

  ellipse(mouseX, mouseY, 20, 20);

}

请注意,您还可以使用 RGB 模式并随着时间的推移修改 R、G 和 B 参数。这比循环 HSB 值要复杂一些,但您可以创建任何您想要的模式。这是一个例子:


float r = 0;

float g = 0;

float b = 0;


float deltaR = 1;

float deltaG = 2;

float deltaB = 4;


void setup(){

  size(500, 500);

  background(255);

}


void draw(){

  

  r += deltaR;

  g += deltaG;

  b += deltaB;

  

  if(r < 0 || r > 255){

    deltaR *= -1;

    r = constrain(r, 0, 255);

  }

  

  if(g < 0 || g > 255){

   deltaG *= -1;

   g = constrain(g, 0, 255);

  }

  

  if(b < 0 || b > 255){

    deltaB *= -1;

    b = constrain(b, 0, 255);

  }

  

  fill(r, g, b);

  ellipse(mouseX, mouseY, 20, 20);

}


查看完整回答
反对 回复 2022-01-12
  • 1 回答
  • 0 关注
  • 157 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信