我的代码上有 alpha 的问题。我做了两个条纹圆圈,但条纹之间的区域不是透明的。这是代码:
PGraphics circ, line, line2, circ2;
void setup(){
size(600,600,P2D);
circ = createGraphics(600,600,P2D);
circ2 = createGraphics(600,600,P2D);
line = createGraphics(600,600,P2D);
line2 = createGraphics(600,600,P2D);
makeCircle(line,circ,300,300,100,#00ff00);
makeCircle(line2,circ2,350,350,100,#ff0000);
}
void draw(){
}
void makeCircle(PGraphics stripes, PGraphics mask, int x, int y, int r,
color c){
mask.smooth();
mask.beginDraw();
mask.background(0,0);
mask.ellipse(x,y,r*2,r*2);
mask.endDraw();
stripes.beginDraw();
stripes.noStroke();
stripes.fill(c,200);
for(int i=0;i<11;i++){
stripes.rectMode(CENTER);
stripes.rect(x+(i*20)-r,y,10,r*2);
}
stripes.mask(mask);
stripes.endDraw();
image(stripes,0,0);
}
我想做这个形状,如果你们知道另一种方式,请告诉我。
答案 0 :(得分:0)
您可以使用Geomerative库轻松获得此功能。
import geomerative.*;
void setup()
{
size(600,600,P2D);
RG.init(this);
}
void draw()
{
background(255);
makeCircle(300, 300, 100, #00ff00);
makeCircle(mouseX, mouseY, 100, #ff0000);
}
void makeCircle(int x, int y, int r, color c) {
fill(c);
RShape mask = RShape.createEllipse(x, y, r*2, r*2);
for (int i=0; i<11; i++) {
RShape strip = RShape.createRectangle(x+(i*20)-r, y-r, 10, r*2);
RShape masked = strip.intersection(mask);
masked.setStroke(false);
RG.shape(masked);
}
}