案例代码如下:
import processing.pdf.*;
import java.util.Calendar;
boolean recordPDF = false;
color col = color(181,157,0,100);
float lineLength =0;
float angle = 0;
float angleSpeed=1.0;
void setup(){
size(displayWidth,displayHeight);
background(255);
smooth();
cursor(CROSS);
}
void draw(){
if(mousePressed){
pushMatrix();
strokeWeight(1.0);
noFill();
stroke(col);
translate(mouseX,mouseY);
rotate(radians(angle));
line(0,0,lineLength,0);
popMatrix();
angle +=angleSpeed;
}
}
void mousePressed(){
lineLength = random(70,200);
}
void keyReleased(){
if(key==DELETE||key==BACKSPACE) background(255);
if(key=='s'||key=='S') saveFrame(timestamp()+"_##.png");
if(key=='d'||key=='D'){
angle=angle+180;
angleSpeed = angleSpeed*-1;
}
if(key==' ') col = color(random(255),random(255),random(255),random(80,150));
if(key=='1') col = color(181,157,0,100);
if(key=='2') col = color(0,130,164,100);
if(key=='3') col = color(87,35,129,100);
if(key=='4') col = color(197,0,123,100);
if(key=='r'||key=='R'){
if(recordPDF==false){
beginRecord(PDF,timestamp()+".pdf");
println("recording started");
recordPDF=true;
}
}
else if(key=='e'||key=='E'){
if(recordPDF){
println("recording stopped");
endRecord();
recordPDF=false;
background(255);
}
}
}
void keyPressed(){
if(keyCode ==UP) lineLength +=5;
if(keyCode ==DOWN) lineLength -=5;
if(keyCode ==LEFT) angleSpeed -=0.5;
if(keyCode ==RIGHT) angleSpeed +=0.5;
}
String timestamp(){
Calendar now=Calendar.getInstance();
return String.format("%1$ty%1$tm%1$td_%1$tH%1$tM%1$tS",now);
}
画的不满意可以按Delete或者Backspace清屏,按小写e或者大写E可以保存PDF,按小写s或者大写S可以保存PNG。
代码保存如图1
图1