我正在处理基本的绘画/绘图程序,其中左键单击将绘制一个点,右键单击将绘制背景颜色的矩形以“擦除”。问题是当我开始擦除它时不会让我回去画画。另外我想让点画得更快,所以它看起来更像是一条线而不是一条虚线。谢谢! 这是代码:
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);
}
}
答案 0 :(得分:0)
您的主要问题是,当用户按下右键时,您会调用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);