Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/476.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Processing 如何刷新窗口但仍保留以前绘制的对象_Processing - Fatal编程技术网

Processing 如何刷新窗口但仍保留以前绘制的对象

Processing 如何刷新窗口但仍保留以前绘制的对象,processing,Processing,我想刷新窗口的背景,因为我的程序的目标是将点连接在一起。但是,每次创建新的最后一个点时,原始(第一个)点将连接到新的最后一个点,同时删除以前的连接 我能够将原始点连接到最后一点。但是,上一行仍然显示在窗口上 我尝试通过将“background(255)”插入“void draw()”部分来刷新背景,以便在“if(mousePressed==true)”之后不断刷新 但是,它将完全擦除以前绘制的对象 //set global variables final int N_PARTITIONS = 1

我想刷新窗口的背景,因为我的程序的目标是将点连接在一起。但是,每次创建新的最后一个点时,原始(第一个)点将连接到新的最后一个点,同时删除以前的连接

我能够将原始点连接到最后一点。但是,上一行仍然显示在窗口上

我尝试通过将“background(255)”插入“void draw()”部分来刷新背景,以便在“if(mousePressed==true)”之后不断刷新

但是,它将完全擦除以前绘制的对象

//set global variables
final int N_PARTITIONS = 10;
        int PrevX = -1;
            int PrevY = -1;
        int count = 0;
     int gridx = 0;
  int gridy = 0;
int OriginalX;
int OriginalY;
PVector[] Vector = new PVector[1]; {
Vector[0] = new PVector();

}
//CREATING WINDOW SIZE
void setup() {
  size(600, 360);
    surface.setResizable(true); 
    background(255);
}



void mouseClicked() {

   if(count == 0) {
        Vector[0].x = mouseX;
        Vector[0].y = mouseY;
     }
      count++;

              CallEllipse();
             if (PrevX != -1) {
                 line(PrevX, PrevY, mouseX, mouseY);
             }
             if (count >= 3) {
               DrawLine();
             }



      PrevX = mouseX;
      PrevY = mouseY;

    PVector[] PrevLine = new PVector[1];
   PrevLine[0] = new PVector();
     PrevLine[0].x = PrevX;
     PrevLine[0].y = PrevY;


}


void CallEllipse() {
  ellipse(mouseX, mouseY, N_PARTITIONS, N_PARTITIONS);
}

void DrawLine() {
  line(Vector[0].x, Vector[0].y, mouseX, mouseY);
}

void grid() {
while(gridx >= 0 & gridy >= 0) {
   stroke(195);
    line(gridx, 0, gridx, height);
      line(0, gridy, width, gridy);
gridx += width/N_PARTITIONS;
gridy += height/N_PARTITIONS;
    }
}

void draw() {
  if (mousePressed == true) {
    mouseClicked();
    background(255);
}
}

我希望删除上一条最后一行,并使用一条新线连接原始点和新的最后一点。

有两种常用方法:

选项1:将所有点存储在数据结构中,如数组或
ArrayList
。每帧,绘制背景,然后重新绘制所有点。此选项只需再编写几行代码,但它允许您制作更复杂的动画

选项2:将所有点绘制到
PGraphics
实例,然后将该实例绘制到帧。这将允许您将背景与前景分开。此选项代码较少,但在将点绘制到
PGraphics
后,无法动态更新点


你选择哪个选项取决于你自己,什么对你的目标最有意义。您可以在中找到有关这两种方法的更多信息。你也可以在谷歌上搜索“处理图形”之类的东西,以获得大量的结果。祝你好运

感谢您的反馈!我将尝试选项1,因为我主要关注使用数组:D