首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PGraphics输出内存问题Java/Processing.org

PGraphics输出内存问题Java/Processing.org
EN

Stack Overflow用户
提问于 2012-05-25 11:30:57
回答 2查看 138关注 0票数 0

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

我需要能够多次重置PGraphics对象。如果我只是绘制矩形、线条等到PGraphics对象,这是很好的。但我需要能够在其中绘制图像。

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

代码语言:javascript
复制
graphic=createGraphics(700, 700, JAVA2D); 

或者有其他方法来解决这个问题?

以下是一些用于突出显示该问题的示例代码。它应该在大约40+点击后崩溃...

代码语言:javascript
复制
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); 
}
EN

回答 2

Stack Overflow用户

发布于 2012-05-25 15:02:46

SOLVED:而不是每次都调用createGraphic,我只需调用以下函数:

代码语言:javascript
复制
graphic = setAlpha(graphic);

下面是函数:

代码语言:javascript
复制
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
EN

Stack Overflow用户

发布于 2017-03-02 10:30:15

PGraphics有一个函数已经可以做到这一点:clear()

reference

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10748137

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档