如何在处理中删除 2D Primitive?
Posted
技术标签:
【中文标题】如何在处理中删除 2D Primitive?【英文标题】:How to delete a 2D Primitive in processing? 【发布时间】:2021-12-29 20:18:25 【问题描述】:我在删除 2D 图元时遇到问题,我尝试在这些图元前面创建一个矩形来隐藏它们。
但是当我点击某个地方时我必须隐藏它们,所以我猜我的draw()
超过了mouseclicked
。
在我的代码中,“maFenetre”是我想要隐藏/删除的内容。 所以这是我的代码:
float hauteurR = 700;
float barreFenetre = 50;
float xIcone = 80;
float x = random(0,500);
float y = random(0,800);
color rouge = #FF0000;
color blanc = #FFFFFF;
void setup()
//colorMode(HSB,360,100,100);
size(1500,1500);
background(#C1C1C1);
void rectangle()
rect((x+largeurR)-xIcone,y,xIcone,barreFenetre);
void maFenetre()
//fenetre
noStroke();
fill(#89E0FF);
rectMode(CORNER);
rect(x,y,largeurR,hauteurR);
//barre croix
rectMode(CORNER);
fill(blanc);
noStroke();
rect(x,y,largeurR,barreFenetre);
if ((mouseX>= (x+largeurR)-xIcone && mouseX <= x+largeurR) && (mouseY >= y && mouseY <= y+barreFenetre))
fill(rouge);
rectangle();
//barre aggrandir
if ((mouseX>= (x+largeurR)-xIcone*2 && mouseX <= (x+largeurR)-xIcone) && (mouseY >= y && mouseY <= y+barreFenetre))
fill(#CEDDDE);
noStroke();
rect((x+largeurR)-xIcone*2,y,xIcone,barreFenetre);
//barre reduire
if ((mouseX>= (x+largeurR)-xIcone*3 && mouseX <= (x+largeurR)-xIcone*2) && (mouseY >= y && mouseY <= y+barreFenetre))
fill(#CEDDDE);
noStroke();
rect((x+largeurR)-xIcone*3,y,xIcone,barreFenetre);
//icone réduire
stroke(#000000);
strokeWeight(2);
line((x+largeurR)-xIcone*2.65,y+barreFenetre/2,(x+largeurR)-xIcone*2.35,y+barreFenetre/2);
//icone aggrandir
stroke(#000000);
strokeWeight(2);
noFill();
rectMode(CENTER);
rect((x+largeurR)-xIcone*1.5,y+barreFenetre/2,20,20);
//icone croix
stroke(#030303);
strokeWeight(2.5);
line((x+largeurR)-xIcone*0.62,y+barreFenetre*0.35,(x+largeurR)-xIcone*0.38,y+barreFenetre*0.75);
line((x+largeurR)-xIcone*0.62,y+barreFenetre*0.75,(x+largeurR)-xIcone*0.38,y+barreFenetre*0.35);
void draw()
maFenetre();
void mouseReleased()
if (mousePressed == ((mouseX>= (x+largeurR)-xIcone && mouseX <= x+largeurR) && (mouseY >= y && mouseY <= y+barreFenetre)))
else
//background(#C1C1C1);
noStroke();
rectMode(CORNER);
fill(#C1C1C1);
rect(x-1,y-1,largeurR+2,hauteurR+2);
//maFenetre();
```
【问题讨论】:
【参考方案1】:删除一个不绘制它的对象。添加一个指示是否需要绘制对象的变量。如果要隐藏(或显示)对象,请更改变量的状态:
boolean drawMyObject = true;
void draw()
// [...]
rectMode(CORNER);
if (drawMyObject)
rect(x, y, w, h);
void mouseReleased()
if (mouseX >= x-w/2 && mouseX <= x+w/2 && mouseY >= y-h/2 && mouseY <= y+h/2)
drawMyObject = false;
【讨论】:
以上是关于如何在处理中删除 2D Primitive?的主要内容,如果未能解决你的问题,请参考以下文章
核心转储,如何增加矩阵维度(可用),在 C 中释放 2d 指针时出错