我正在使用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);
}
答案 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%透明。