我正在使用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);
}发布于 2012-05-25 15:02:46
SOLVED:而不是每次都调用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;
}发布于 2017-03-02 10:30:15
PGraphics有一个函数已经可以做到这一点:clear()。
清除缓冲区中的像素。此函数仅适用于使用createGraphics()函数创建的PGraphics对象。与主图形上下文(显示窗口)不同,使用createGraphics()创建的其它图形区域中的像素可以是完全或部分透明的。此函数用于清除PGraphics对象中的所有内容,以使所有像素100%透明。
https://stackoverflow.com/questions/10748137
复制相似问题