processing--图形的不透明度和混合模式动画
下面是由两个圆形组成的动画,线条在两个圆形之间不停的变换位置,当鼠标单击图形的时候动画停止:
1 PGraphics gradient1; 2 PGraphics gradient2; 3 PGraphics circle1; 4 int n=50; 5 int m=200; 6 float x, y, angle; 7 void setup() { 8 size(400, 800); 9 frameRate(15); 10 gradient1=createGraphics(width, height); 11 gradient2=createGraphics(width, height); 12 circle1=createGraphics(width, height); 13 } 14 void draw() { 15 background(#442ee9); 16 //绘制渐变图形 17 gradient1.beginDraw(); 18 for (int i=0; i<300; i++) { 19 int col=i*(m-n)/300; 20 gradient1.fill(255-col*2, 220, col*2); 21 gradient1.noStroke(); 22 gradient1.rect(i+50, 0, 1, height); 23 } 24 gradient1.endDraw(); 25 26 gradient2.beginDraw(); 27 for (int i=0; i<300; i++) { 28 int col=i*(m-n)/300; 29 gradient2.fill(255-col*0.5); 30 gradient2.noStroke(); 31 gradient2.rect(i+50, 0, 1, height); 32 } 33 gradient2.endDraw(); 34 //绘制圆形 35 circle1.beginDraw(); 36 circle1.noStroke(); 37 circle1.circle(200, 400, 300); 38 circle1.endDraw(); 39 //应用圆形蒙版到渐变图形 40 gradient1.mask(circle1); 41 gradient2.mask(circle1); 42 blendMode(SCREEN); 43 push(); 44 translate(0, 80); 45 tint(255, 160); 46 image(gradient2, 0, 0); 47 pop(); 48 blendMode(BLEND); 49 push(); 50 translate(0, -100); 51 tint(255, 220); 52 image(gradient1, 0, 0); 53 pop(); 54 55 fill(255); 56 textSize(30); 57 text("D-FORM", 136, 400); 58 59 noFill(); 60 stroke(255); 61 strokeWeight(2); 62 circle(200, 480, 300); 63 filter(BLUR, 1); 64 65 fill(0); 66 textSize(30); 67 text("D-FORM", 136, 500); 68 69 stroke(255, 100); 70 for (int i=0; i<9; i++) { 71 x= width/2+150*cos(radians(angle)); 72 y = 300+150*sin(radians(angle)); 73 line(x, y, x, y+180); 74 angle +=10; 75 } 76 } 77 void mouseClicked() { 78 noLoop(); 79 redraw(); 80 }


浙公网安备 33010602011771号