Java 如何在不使用背景的情况下删除形状(255);

Java 如何在不使用背景的情况下删除形状(255);,java,function,processing,Java,Function,Processing,我试图使drawRedlines函数在mousePressed函数和mouseReleased函数中出现和消失。我试过使用背景(255);在我的鼠标中,由于某种原因,它也删除了我的横杆功能。我尝试将红线矩形的跳线更改为0,但当我释放鼠标时,它仍然处于相同的位置 final int NUM_line=15; 最终整型线厚度=20; 最终整数收敛\垂直\偏移=175; 最终整数收敛\垂直\偏移量2=100; int倾覆=20; 整数宽度=500; 内部高度=500; int-x1=30; int c

我试图使drawRedlines函数在mousePressed函数和mouseReleased函数中出现和消失。我试过使用背景(255);在我的鼠标中,由于某种原因,它也删除了我的横杆功能。我尝试将红线矩形的跳线更改为0,但当我释放鼠标时,它仍然处于相同的位置

final int NUM_line=15;
最终整型线厚度=20;
最终整数收敛\垂直\偏移=175;
最终整数收敛\垂直\偏移量2=100;
int倾覆=20;
整数宽度=500;
内部高度=500;
int-x1=30;
int crossWidth=宽度-(30*2);
int y1=高度-20;
int交叉高度=20;
int capX=x1;
int capY=y1+交叉高度/2;
int capX2=宽度-x1;
int-diffY=60;
int-diffX=10;
int redLinex=145;
int redLinex2=350;
int redLiney=0;
int redlineHeight=高度;
int redlineWidth=5;
无效设置(){
尺寸(500500);
绘图收敛垂直();
水平交叉();
画黄线();
}
作废提款(){
}
void mousePressed(){
画红线();
}
void mouseereleased(){
绘图收敛垂直();
水平交叉();
画黄线();
}
空水平交叉(){
对于(int rows=0;rows
方法是一个循环。如果你在这个循环中绘制你的东西,你可以实时更新它。我稍微修改了您的循环,使红线仅在鼠标左键按下时显示:

final int NUM_LINES = 15;
final int LINE_THICK = 20;
final int CONVERGE_VERTICAL_OFFSET = 175;
final int CONVERGE_VERTICAL_OFFSET2 = 100;

int capSize = 20;
int width = 500;
int height = 500;
int x1 = 30;
int crossWidth = width - (30*2);
int y1 = height - 20;
int crossHeight = 20;
int capX = x1;
int capY = y1 + crossHeight/2;
int capX2 = width - x1;
int diffY = 60;
int diffX = 10;
int redLinex = 145;
int redLinex2 = 350;
int redLiney = 0;
int redlineHeight = height;
int redlineWidth = 5;

boolean redLineVisible = false;

void setup(){
  size(500,500);
  //drawConvergingvertical();
  //horizontalCross();
  //drawYellowlines();
}

void draw(){
  background(255);
  drawConvergingvertical();
  horizontalCross();
  drawYellowlines();
  drawRedlines();
}

void mousePressed(){
  //drawRedlines();
  redLineVisible = true;
}

void mouseReleased(){
  //drawConvergingvertical();
  //horizontalCross();
  //drawYellowlines();
  //drawRedlines();
  redLineVisible = false;
}




void horizontalCross(){
  for(int rows = 0; rows < NUM_LINES; rows++){
    //println(rows, capX, capX2); Used this to Debug;
    drawCrossbars();
    y1 = y1 - diffY;
    capY = capY - diffY - 1;
    x1 = x1 + diffX;
    capX = capX + diffX;
    crossWidth = crossWidth - diffX*2;
    capX2 = capX2 - diffX;
    crossHeight = crossHeight - 2;
    capSize = capSize - 2;
  }
}

void drawCrossbars(){
  rect(x1,y1,crossWidth,crossHeight);
  ellipse(capX,capY,capSize,capSize);
  ellipse(capX2,capY,capSize,capSize);
}

void drawConvergingvertical(){
  fill(0);
  stroke(0);
  quad(width/2-CONVERGE_VERTICAL_OFFSET,height,width/2-CONVERGE_VERTICAL_OFFSET2,0,width/2-CONVERGE_VERTICAL_OFFSET2+LINE_THICK,0,width/2-CONVERGE_VERTICAL_OFFSET+LINE_THICK,height);
  quad(width/2+CONVERGE_VERTICAL_OFFSET,height,width/2+CONVERGE_VERTICAL_OFFSET2,0,width/2+CONVERGE_VERTICAL_OFFSET2-LINE_THICK,0,width/2+CONVERGE_VERTICAL_OFFSET-LINE_THICK,height);
}

void drawYellowlines(){
  fill(255,255,0);
  stroke(255,255,0);
  rect(150, height - 100, 200, 10);
  rect(150, 100, 200, 10);
}

void drawRedlines(){
  if (redLineVisible) {
    redLinex = 145;
    redLinex2 = 350;
    redLiney = 0;
    redlineHeight = height;
    redlineWidth = 5;
    fill(255,0,0);
    stroke(255,0,0);
    rect(redLinex,redLiney,redlineWidth,redlineHeight);
    rect(redLinex2,redLiney,redlineWidth,redlineHeight);
  }
}
final int NUM_line=15;
最终整型线厚度=20;
最终整数收敛\垂直\偏移=175;
最终整数收敛\垂直\偏移量2=100;
int倾覆=20;
整数宽度=500;
内部高度=500;
int-x1=30;
int crossWidth=宽度-(30*2);
int y1=高度-20;
int交叉高度=20;
int capX=x1;
int capY=y1+交叉高度/2;
int capX2=宽度-x1;
int-diffY=60;
int-diffX=10;
int redLinex=145;
int redLinex2=350;
int redLiney=0;
int redlineHeight=高度;
int redlineWidth=5;
布尔redLineVisible=false;
无效设置(){
尺寸(500500);
//绘图收敛垂直();
//水平交叉();
//画黄线();
}
作废提款(){
背景(255);
绘图收敛垂直();
水平交叉();
画黄线();
画红线();
}
void mousePressed(){
//画红线();
红线可见=真;
}
void mouseereleased(){
//绘图收敛垂直();
//水平交叉();
//画黄线();
//画红线();
红线可见=假;
}
空水平交叉(){
对于(int rows=0;rows
玩得开心

如何在不使用背景的情况下删除形状(255);[……]

一点也不。您不能“删除”窗口中绘制的内容。你所能做的就是画一些不同的东西,覆盖形状的东西<代码>背景
不会删除任何内容。它只是在整个窗口中绘制一个统一的颜色。
您必须在
draw()
中重新绘制整个场景

使用内置变量
mousePressed
确定是否按下鼠标,并根据变量的状态调用
drawRedlines()
。此外,您还必须重置每个帧中某些变量的状态:

void draw(){
倾覆=20;
x1=30;
横向宽度=宽度-(30*2);
y1=高度-20;
交叉高度=20;
capX=x1;
capY=y1+