我目前拥有的代码允许我使用mouseP的()
和mouseDragged()
创建一个矩形。但是,当我开始创建另一个时,我之前创建的矩形消失了。
我只是想让我的程序创建一个矩形,而不是在创建另一个矩形时让它消失。
我也希望这个工作与背景()
内的绘制()
函数,因为每当我删除背景()
从程序或把它放在安装()
我无法减少宽度和高度的形状拖动鼠标时,它会创建小轨迹的矩形内的形状发生时,鼠标也被拖动。
这是我的密码
int a, b, c, d = 0;
void setup() {
size(1000, 800);
}
void draw() {
background(204);
stroke(0);
strokeWeight(2);
noFill();
rect(a, b, c, d);
}
void mousePressed() {
a=mouseX;
b=mouseY;
}
void mouseDragged() {
c=mouseX-a;
d=mouseY-b;
rect(a, b, c, d);
}
听起来你可以使用另一个图层来绘制(不清除它)。幸运的是,使用PGraphics很容易做到:
int a, b, c, d = 0;
PGraphics layer;
void setup() {
size(1000, 800);
stroke(0);
strokeWeight(2);
noFill();
// make new drawing layer
layer = createGraphics(width, height);
// use drawing functions within beginDraw() / endDraw()
layer.beginDraw();
layer.stroke(0);
layer.background(204);
layer.strokeWeight(2);
layer.noFill();
layer.endDraw();
}
void draw() {
background(204);
// render background layer
image(layer,0,0);
// draw foreground;
rect(a, b, c, d);
}
void mousePressed() {
a=mouseX;
b=mouseY;
}
void mouseDragged() {
c=mouseX-a;
d=mouseY-b;
// draw preview
rect(a, b, c, d);
}
void mouseReleased(){
// render final shape into background layer
layer.beginDraw();
layer.rect(a, b, c, d);
layer.endDraw();
}
如果你决定玩一个绘图工具,你可能想看看这个答案。