如何根据 Processing 3 中的鼠标位置更改 RGB 颜色?
How to change RGB colour depending on mouse position in Processing3?
我正在 Processing3 中编写一个小程序,使我能够将背景更改为存储在数组中的特定颜色 RGB 代码。 R、G 和 B 的每个值都存储在一个单独的数组中。
改变鼠标水平位置会改变背景颜色。
但是这个解决方案代码重复性很强,而且有很多if/else语句。我想使用 for() 循环来简化代码并减少重复性。但是,我正在努力将鼠标位置变量包含在 for() 循环中。是否可以使用 for() 循环简化此代码并以某种方式映射鼠标位置以访问数组项?这是我现在的代码:
int[] r = {255,249,240,233,227};
int[] g = {115,138,157,173,187};
int[] b = {0,18,63,94,120};
void setup() {
size(500, 500);
}
void draw() {
int x = mouseX;
if(x >= 0 && x <=100) {
background(r[0], g[0], b[0]);
}
else if (x >= 101 && x <= 200){
background(r[1], g[1], b[1]);
}
else if (x >= 201 && x <= 300){
background(r[2], g[2], b[2]);
}
else if (x >= 301 && x <= 400){
background(r[3], g[3], b[3]);
}
else {
background(r[4], g[4], b[4]);
}
}
我希望将代码简化为更像这样的东西:
int[] r = {255,249,240,233,227};
int[] g = {115,138,157,173,187};
int[] b = {0,18,63,94,120};
void setup() {
size(500, 500);
}
void draw() {
for(int i=0; i<r.length; i++) {
background(r[i],g[i],b[i]);
}
}
但是,我不知道如何以某种方式更改此代码,背景颜色会根据鼠标水平位置而改变,如第一个示例所示。
感谢您的回复和帮助!
如果您的不同值之间的步长为 100,那么您只需将输入的 X 值除以 100。整数除法将处理其余部分。
if 语句只是为了确保它位于数组的范围内。
int mouseX = ...;
int i = mouseX / 100;
if(i < r.length && i < g.length && i < b.length)
{
background(r[i], g[i], b[i]);
}
我正在 Processing3 中编写一个小程序,使我能够将背景更改为存储在数组中的特定颜色 RGB 代码。 R、G 和 B 的每个值都存储在一个单独的数组中。
改变鼠标水平位置会改变背景颜色。
但是这个解决方案代码重复性很强,而且有很多if/else语句。我想使用 for() 循环来简化代码并减少重复性。但是,我正在努力将鼠标位置变量包含在 for() 循环中。是否可以使用 for() 循环简化此代码并以某种方式映射鼠标位置以访问数组项?这是我现在的代码:
int[] r = {255,249,240,233,227};
int[] g = {115,138,157,173,187};
int[] b = {0,18,63,94,120};
void setup() {
size(500, 500);
}
void draw() {
int x = mouseX;
if(x >= 0 && x <=100) {
background(r[0], g[0], b[0]);
}
else if (x >= 101 && x <= 200){
background(r[1], g[1], b[1]);
}
else if (x >= 201 && x <= 300){
background(r[2], g[2], b[2]);
}
else if (x >= 301 && x <= 400){
background(r[3], g[3], b[3]);
}
else {
background(r[4], g[4], b[4]);
}
}
我希望将代码简化为更像这样的东西:
int[] r = {255,249,240,233,227};
int[] g = {115,138,157,173,187};
int[] b = {0,18,63,94,120};
void setup() {
size(500, 500);
}
void draw() {
for(int i=0; i<r.length; i++) {
background(r[i],g[i],b[i]);
}
}
但是,我不知道如何以某种方式更改此代码,背景颜色会根据鼠标水平位置而改变,如第一个示例所示。
感谢您的回复和帮助!
如果您的不同值之间的步长为 100,那么您只需将输入的 X 值除以 100。整数除法将处理其余部分。
if 语句只是为了确保它位于数组的范围内。
int mouseX = ...;
int i = mouseX / 100;
if(i < r.length && i < g.length && i < b.length)
{
background(r[i], g[i], b[i]);
}