1.案例代码如下:
import generativedesign.*;
import processing.pdf.*;
import java.util.Calendar;
Tablet tablet;
boolean recordPDF = false;
float x = 0, y = 0;
float stepSize = 5.0;
PFont font;
String letters = "Sie hören nicht die folgenden Gesänge, Die Seelen, denen ich die ersten sang,Zerstoben ist das freundliche Gedränge, Verklungen ach! der erste Wiederklang.";
int fontSizeMin = 15;
float angleDistortion = 0.0;
int counter = 0;
void setup() {
size(displayWidth, displayHeight);
background(255);
smooth();
tablet = new Tablet(this);
x = mouseX;
y = mouseY;
font = createFont("ArnhemFineTT-Normal",10);
textFont(font,fontSizeMin);
cursor(CROSS);
}
void draw() {
if (mousePressed) {
float pressure = gamma(tablet.getPressure()*1.1, 2.5);
float d = dist(x,y, mouseX,mouseY);
textFont(font,fontSizeMin+ 200 * pressure);
char newLetter = letters.charAt(counter);
stepSize = textWidth(newLetter);
if (d > stepSize) {
float angle = atan2(mouseY-y, mouseX-x);
pushMatrix();
translate(x, y);
rotate(angle + random(angleDistortion));
fill(0);
textAlign(LEFT);
text(newLetter, 0, 0);
popMatrix();
counter++;
if (counter > letters.length()-1) counter = 0;
x = x + cos(angle) * stepSize;
y = y + sin(angle) * stepSize;
}
}
}
void mousePressed() {
x = mouseX;
y = mouseY;
}
void keyReleased() {
if (key == 's' || key == 'S') saveFrame(timestamp()+"_##.png");
if (key == DELETE || key == BACKSPACE) background(255);
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) angleDistortion += 0.1;
if (keyCode == DOWN) angleDistortion -= 0.1;
}
float gamma(float theValue, float theGamma) {
return pow(theValue, theGamma);
}
String timestamp() {
Calendar now = Calendar.getInstance();
return String.format("%1$ty%1$tm%1$td_%1$tH%1$tM%1$tS", now);
}
保存并运行发现是空白的,此时只需要用鼠标绘画出自己想要的内容即可。我写的是乒乓球世界第一孙颖莎的大写字母。如图1
图1
绘画完成后想保持PNG可以按S或者小写s,想保存PDF按大写E或者小写e。如果觉得画的不好看,按下Backspace可以清屏。如果发现报错没关系,可以运行成功并进行绘画。