int estado,cont; int[] x1=new int[1000]; int[] x2=new int[1000]; int[] y1=new int[1000]; int[] y2=new int[1000]; int actualX1,actualY1; void setup(){ size(400,400); rectMode(CORNERS); estado=0; cont=0; } void draw(){ background(0); stroke(0,255,0); noFill(); rect(375,1,398,25); //dibuja line(375,1,398,25); //el boton de la esquina line(375,25,398,1); //superio derecha fill(0,255,0,30); for(int i=1;i<=cont;i++){ //imprime todos los rectangulos ya grabados, de color verde rect(x1[i],y1[i],x2[i],y2[i]); } if(estado==1){ //si el botón del mouse está presionado (es decir que está generando un rectangulo) stroke(0,0,255); //pone color rojo para el que se está generando fill(0,0,255,30); rect(actualX1,actualY1,mouseX,mouseY); } } void mousePressed(){ if(mouseX>357 && mouseY<25){//si el mouse fue presionado en el cuadrado de la esquina entonces cont=0; //borra todo estado=0; } else{ estado=1; //cuando se presiona el boton estado pasa a 1 (generación) actualX1=mouseX; //guarda los datos de la actualY1=mouseY; //primer esquina del rectangulo } } void mouseReleased(){ if(!(mouseX>357 && mouseY<25)){//si el mouse no fue presionado en el cuadrado de la esquina entonces estado=0; cont++; //cuenta un nuevo rectangulo x1[cont]=actualX1; //y agrega el nuevo rectangulo y1[cont]=actualY1; x2[cont]=mouseX; y2[cont]=mouseY; } }