PGraphics outofmemory问题Java / Processing.org

时间:2012-05-25 03:30:57

标签: java processing

我正在使用Java / Processing.org来创建绘图应用程序。

我需要能够重置PGraphics对象。 如果我只绘制了对PGraphics对象的行,那么这很好。 但我需要能够绘制图像。

有没有办法在不调用的情况下重置PGraphics对象:

graphic=createGraphics(700, 700, JAVA2D); 

还是有其他方法解决这个问题吗?

以下是一些示例代码,以突出显示该问题。 它会在大约40次点击后崩溃......

PImage img;
PImage main_image;

PGraphics graphic;

void setup(){
  size(700,700);
 img=loadImage("img.png"); 
  graphic=createGraphics(700, 700, JAVA2D); 
}

void draw(){

 graphic.beginDraw();
 graphic.image(img,mouseX,mouseY,10,10); 

 graphic.endDraw();
 image(graphic,0,0);


}

void mouseClicked(){

  graphic=createGraphics(700, 700, JAVA2D); 
}

2 个答案:

答案 0 :(得分:1)

解决::: 我每次只调用以下函数时,而不是调用createGraphic:

graphic = setAlpha(graphic);

这是函数:

PGraphics setAlpha(PGraphics g){
  g.loadPixels();
 for (int x = 0; x < g.width; x++ ) {
    for (int y = 0; y < g.height; y++ ) {

      // Calculate the 1D pixel location
      int loc = x + y*g.width;

  g.pixels[loc]=color(0,0);
 }  
 } 
 g.updatePixels();
 return g;
}

答案 1 :(得分:0)

PGraphics有一个功能已经执行此操作:clear()

来自reference

清除缓冲区中的像素。此函数仅适用于使用createGraphics()函数创建的PGraphics对象。与主图形上下文(显示窗口)不同,使用createGraphics()创建的其他图形区域中的像素可以完全或部分透明。此函数清除PGraphics对象中的所有内容,使所有像素100%透明。