加工绘制程序
Processing Draw Program
我正在制作一个基本的 paint/draw 处理程序,其中左键单击将绘制一个点,右键单击将绘制一个背景颜色的矩形到 "erase"。问题是,当我开始擦除时,它不会让我回去画画。我也想让点画得更快,这样它看起来更像一条线而不是一条虚线。谢谢!
这是代码:
void setup() {
size(600, 600);
background(#C4C4C4);
}
void draw() {
frameRate(60);
if (mouseButton == LEFT) {
fill(#030303);
point(mouseX, mouseY);
}
else if(mouseButton == RIGHT){
fill(#C4C4C4);
noStroke();
rect(mouseX-15, mouseY-15, 30, 30);
}
}
您的主要问题是当用户按下右键时您调用了 noStroke()
,但是您从未在用户按下左键时将笔划设置回原位。 point()
函数使用描边颜色,而不是填充颜色,因此您必须重新设置它。这有效:
void setup() {
size(400, 400);
background(#C4C4C4);
}
void draw() {
if (mouseButton == LEFT) {
stroke(#030303);
point(mouseX, mouseY);
}
else if(mouseButton == RIGHT){
fill(#C4C4C4);
noStroke();
rect(mouseX-15, mouseY-15, 30, 30);
}
}
至于画线而不是点,可以使用pmouseX
和pmouseY
变量(保存鼠标先前的位置)画线。具体来说,改变这个:
point(mouseX, mouseY);
为此:
line(pmouseX, pmouseY, mouseX, mouseY);
我正在制作一个基本的 paint/draw 处理程序,其中左键单击将绘制一个点,右键单击将绘制一个背景颜色的矩形到 "erase"。问题是,当我开始擦除时,它不会让我回去画画。我也想让点画得更快,这样它看起来更像一条线而不是一条虚线。谢谢! 这是代码:
void setup() {
size(600, 600);
background(#C4C4C4);
}
void draw() {
frameRate(60);
if (mouseButton == LEFT) {
fill(#030303);
point(mouseX, mouseY);
}
else if(mouseButton == RIGHT){
fill(#C4C4C4);
noStroke();
rect(mouseX-15, mouseY-15, 30, 30);
}
}
您的主要问题是当用户按下右键时您调用了 noStroke()
,但是您从未在用户按下左键时将笔划设置回原位。 point()
函数使用描边颜色,而不是填充颜色,因此您必须重新设置它。这有效:
void setup() {
size(400, 400);
background(#C4C4C4);
}
void draw() {
if (mouseButton == LEFT) {
stroke(#030303);
point(mouseX, mouseY);
}
else if(mouseButton == RIGHT){
fill(#C4C4C4);
noStroke();
rect(mouseX-15, mouseY-15, 30, 30);
}
}
至于画线而不是点,可以使用pmouseX
和pmouseY
变量(保存鼠标先前的位置)画线。具体来说,改变这个:
point(mouseX, mouseY);
为此:
line(pmouseX, pmouseY, mouseX, mouseY);