当前位置: 首页 > 知识库问答 >
问题:

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

柴衡
2023-03-14

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

//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个答案

梁浩涆
2023-03-14

有两种通用方法:

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

选项2:将所有点绘制到pgraphics实例,然后将该实例绘制到框架。这将允许您分离背景和前景。此选项的代码较少,但在将这些点绘制到pgraphics后,您不能动态更新它们。

 类似资料:
  • 问题内容: 我正在编写一个angularJS应用。在这个特定的控制器中,我通过该服务打开一个新的浏览器窗口。但是在新窗口中,所有变量都丢失了。 我尝试使用,但这不起作用。实际上,在新的浏览器窗口中,所有应用程序服务,控制器或作用域都根本无效,这是真的吗?有没有办法打开新的浏览器窗口,但仍然使新窗口与旧窗口属于同一个角度应用程序?我需要访问一些angularJS服务以及打开该新窗口的控制器范围。这有

  • 问题内容: 您如何“忘记”以前的地块 我正在尝试使用绘制多个时间 代码如下: 不幸的是,无论我做什么,我都会得到相同的情节(实际上是从我之前运行并完成的其他代码中得到的)。 有任何想法吗? 问题答案: 我宁愿每次都使用它来 清除当前图形, 而不是关闭并重新打开它,以保持窗口大小并为您提供更好的性能和更好的内存使用率。 同样,您可以 清除当前 轴。 要清除特定的轴(例如,在一个图形中有多个轴时很有用

  • 问题内容: 我在程序开始时,根据数据库中的某些内容,以编程方式在JScrollPane中添加了许多组件(JPanels,JLabels等)。 似乎对于GUI(?)而言,此过程太快了,因此JScrollPane并不总是正确更新,即,即使内部JPanel大于可见区域,滚动条也不可见。 调整窗口大小(JFrame)可以解决此问题,因为我认为Java在调整组件大小时会重新打印它们。 作为测试,我添加了一个

  • 在用JFrame编写一个简单的Tron游戏时,我遇到了一点问题。我不确定我如何能保持显示为“光循环”作为一条线停留在屏幕上显示,但同时重新油漆屏幕,使移动仍然有效。以下是我的代码:(仅供参考,它全部编译,所有工作都像它在这里写的一样完美) 另外,我想知道,当我按下一个箭头键时,它将如何使它,而不是只从x或y键中添加或减去一次,而是不断地添加到x或y键,直到按下另一个箭头。 顺便说一句,如果有人想知

  • 问题内容: 我想知道是否有人想知道为什么在按下GUI上的按钮后,下面的代码为什么不显示带有线的图形。我想创建一个程序,该程序在通过单击按钮导入一组数据后执行一长串命令。这些命令之一将是在同一窗口内的图形上显示光谱数据。这是我到目前为止的内容: 问题答案: 那是因为xaxis和yaxis的范围不会更改为新数据的范围,因此请更改您的refreshFigure,如下所示:

  • 问题内容: 是否可以永久更改javascript变量?如图所示,如果我将变量X设置为1,然后将按钮的onClick更改为2。如何在刷新页面时使该变量保持为2? 问题答案: 或可以做到这一点。不同之处在于,只要浏览器保持打开状态,它就可以持续使用,直到浏览器重新启动后,它才能幸免。持久性不仅适用于 整个网站, 还适用于 整个网站 。 当您需要设置一个应在下一页中反映的变量时,请使用: 在任何页面(例